Enum은 클래스 내에 상수들을 열거해 관리하는 문법으로, 각 상수들은 객체처럼 property와 function을 가질 수 있는 특징이 있습니다. Stable replacement of the enum class values functionEnum 클래스의 열거된 상수들을 연속적으로 접근하고 싶을 때 values 함수를 자주 사용했었는데요. 그러다 최근 Kotlin 1.9.0 버전으로 업그레이드를 하니 values 대신 entries 속성을 사용하길 권장합니다. Enum의 entries는 kotlin 1.8.20에서 Beta 기능으로 처음 등장했고 kotlin 1.9.0 버전에서 정식으로 Stable 되었습니다. entries 속성도 values와 동일하게 열거된 상수들을 연속적으로 접근할 수 있습니다..
Kotlin 1.9.0 버전으로 올리면 Selad Class 자식으로 object 대신 data object를 사용하라고 권장합니다. 기존 object와 차이점은 무엇일까요? 어떤 장점이 있는 걸까요? 밑줄까지 치면서 권장하면서 말이에요 Stable data objects for symmetry with data classes https://kotlinlang.org/docs/whatsnew19.html#support-for-secondary-constructors-with-bodies-in-inline-value- classes What's new in Kotlin 1.9.0 | Kotlin kotlinlang.org data object는 1.9.0 버전부터 정식 출시(Stable)된 데이터 홀더 객..
2023년 7월에 구글은 Google Play 요구사항 정책에 추가되는 개발자 인증 요구사항을 공개했었습니다. 해당 정책은 개발자의 신원 정보를 앱 사용자에게 공개하는 것으로 Google Play를 안전하고 신뢰할 수 있는 플랫폼으로 유지하기 위한 방법으로 도입된 것입니다. 이 정책을 따르지 않는다면 구글 계정과 배포된 앱이 삭제될 수 있다고 합니다. 굉장히 충격적인 소식이 아닐 수 없는데요. 다행인 점은 기존에 가입한 개발자 계정은 다양한 유형과 규모 등 인증하는 데 시간이 더 오래 걸릴 수 있다는 점을 고려해서 기한을 개발자가 직접 선택할 수 있도록 배려해 주었습니다. 2024년 2월 29일까지 마감 기한을 직접 선택하지 않으면 자동으로 마감 기한이 설정되니 꼭 참고하시길 바랍니다. 제공해야 하는 신..
당신은 Android 개발자로서 사진에 보이는 UI를 구현해야 합니다. UI 요구사항 중 왼쪽 아이콘을 클릭 액션이 존재하는데 클릭 영역을 뷰 사이즈보다 크게 잡아야 합니다. 어떻게 구현하면 좋을까요? 비교적 연령대가 높은 유저가 사용하는 서비스를 개발하다 보니 위 요구사항을 구현할 일이 종종 있었습니다. 그때마다 빈 레이아웃을 만들어서 해당 레이아웃에 클릭 리스너를 설정하는 방식을 사용했었는데요. 깨끗한 코드를 작성하겠다는 양심을 버려가며 레거시 코드를 마구마구 만드는 기분이었습니다.. 그러다 최근 위 요구사항에 알맞게 사용할 수 있는 touchDelegate라는 기능을 알게 되어서 소개해보려고 합니다. TouchDelegate TouchDelegate는 뷰가 가지고 있는 경계 너머로까지 클릭 반경을 ..
InAppUpdate 인 앱 업데이트 기능은 앱 내에서 사용자의 업데이트를 유도하는 기능으로 2019년 Google IO에서 처음 소개되었습니다! 안드로이드 5.0(Api level 21) 이상부터 사용 가능하고 Play Core Library 버전도 1.5.0 이상을 사용해야 합니다. 의존성 추가 implement 'com.google.android.play:app-update-ktx:2.1.0' 업데이트 가능 여부 private val appUpdateManager: AppUpdateManager by lazy { AppUpdateManagerFactory.create(context) } val appUpdateInfoTask = appUpdateManager.appUpdateInfo appUpdat..
안녕하세요. 이번 시간에는 Player 움직임을 따라가는 카메라를 만들어보려고 합니다. Cinemachine Package 설치 Package Manager 창을 열어 Cinemachine를 검색해서 설치하세요. Cinemachine을 이용해서 Player를 따라다니는 카메라를 쉽게 만들 수 있어요! Cinemachine Camera 생성 Cinemachine을 설치하면 GameObject에서 Cinemachine Object를 Scean에 추가할 수 있습니다. 그리고 기존 Scean에 존재하던 Main Camera에도 CinemacineBrain 컴포넌트가 추가되는 것을 확인하실 수 있습니다. Follow Prefabs 설정 추가된 Cinemachine Camera의 속성을 보면 GameObject를 ..
안녕하세요. 이번 시간에는 Animation 기능을 통해 지난 시간에 구현한 Player 움직임 기능에 생동감을 불어넣어 봅시다. Animator Animator Component는 추가된 GameObject에 애니메이션 기능을 추가할 때 주로 사용됩니다. 그리고 애니메이션을 편집하기 위해 Animator Controller라는 파일이 생성해서 등록해 줍니다. Animator Controller 생성 및 적용 Project 창에서 원하는 위치에 우클릭 -> create -> Animation Controller를 통해 생성할 수 있습니다. 그리고 이 생성한 파일을 추가한 Animator에 넣어주면 됩니다 Animation Clip 생성 Animation Clip은 애니메이션에서 상태 또는 작은 단위라고 ..
요즘 회사에서 WebView 이슈로 여러 번 앱 업데이트를 하고 있는데요. 이번 글의 주제는 WebView의 Alert가 안 나오는 이슈가 있어서 알아보게 되었습니다. 이번 글에서는 WebView의 Alert를 표시하는 방법에 대해서 소개해보려고 합니다. Alert가 안 나온다면 //문제의 코드 override fun onJsAlert( view: WebView, url: String, message: String, result: JsResult ): Boolean { return true } 저처럼 Alert가 표시되지 않는 이슈를 겪고 있으시다면 WebChromeClient의 onJsAlert 함수에서 아무 처리도 하지 않고 그냥 true를 반환하고 있는지 확인해 보세요 onJsAlert 정의를 따라..
안녕하세요. 오늘은 키보드를 입력하면 Player가 움직이도록 만들어보겠습니다. Unity InputSystem Package 설치 Unity에서는 InputSystem는 마우스, 키보드 그리고 터치처럼 사용자의 입력을 처리할 때 사용하는 기술입니다. 그런데 2019년에 새로운 InputSystem이 발표했다고 해요. 처음 프로젝트를 생성했을 때는 기존 InputSystem이 설치되어 있고 추가적으로 PackageManager를 통해 새로운 InputSystem을 설치할 수 있다고 합니다. 새로운 InputSystem은 기존 InputSystem과 다르게 간단한 인터페이스로 모든 플랫폼을 지원할 수 있어 PC 뿐만 아니라 모바일, 조이스틱 용 게임을 모두 한 번에 대응할 수 있다고 합니다. Package..
안녕하세요. 오늘은 Unity Tile을 통해 배경을 만들어보려고 합니다. TileMap Object 생성 TimeMap이란 그리드 형태로 Asset을 일정하게 배치할 때 사용되는 기술입니다. 주로 게임의 배경이나 구조물을 배치할 때 사용되는 기술로 알고 있으시면 됩니다. 그리고 Tilemap Collider 2D를 통해 충돌 이벤트도 구현할 수 있습니다 배치하는 Asset 모양에 따라 크게 Hexagonal, Isometric, Rectangular 3가지 유형의 TileMap 존재합니다. mystic-wood의 Tile 모양은 Rectangular에 적합하기 때문에 Rectangular Tile Map을 생성해 주겠습니다. Tile Size 설정하기 Tile이 배치될 Cell 크기가 Player보다 ..