요즘 회사에서 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보다 ..
안녕하세요. 오늘은 Unity 게임 개발을 본격적으로 시작하기 전 Camera 설정을 짧게 하려고 합니다. 이전에 만든 Player Prefabs를 Scean에 배치하고 Game 속에서 보게 되면 너무나도 작게 보이는 것을 확인할 수 있습니다. 캐릭터가 게임에서 잘 인지될 수 있도록 크기를 조절해야겠죠? 캐릭터의 크기를 늘리는 방법도 있겠지만 저희는 카메라 설정으로 변경해 보겠습니다 Camera OrthographicSize Camera의 Inspector를 보면 Size 속성을 찾아 카메라의 크기를 줄일 수 있습니다. Size 속성은 orthographic projection의 Size 속성인데요. 그래서 만약 Size 속성을 찾을 수 없다면 Camera의 Projection 속성을 orthograph..
안녕하세요. 이번 포스팅에서는 Unity의 prefabs를 만들어보려고 합니다. Prefabs란? Prefabs는 GameObject를 생성 및 설정을 저장할 수 있기 때문에 재활용 가능한 GameObject를 생성할 때 사용하는 기술입니다. Prefabs에서 생성된 GameObject는 Prefabs에 저장되어 있는 정보들을 동일하게 들고 있고 개별적으로 값을 변경할 수도 있습니다. 그리고 런타임에서 GameObject를 생성하고 싶을 때도 Prefabs를 사용합니다. 자세한 예시를 알아볼까요? - 산속 배경일 때 반복적으로 심는 '나무'들 - 총 게임에서 총을 쏠 때마다 생성되는 '총알'을 만들 때 - 주변에서 랜덤으로 생성되는 '몬스터' Player Prefabs 생성하기 Prefabs 생성 방법은..
안녕하세요. 이번 포스팅에서는 본격적으로 게임을 만들기 전에 Asset을 추가하는 방법에 대해 정리하고자 합니다. Asset Asset이란 Unity에서 게임에 사용될 수 있는 아이템을 의미합니다. 배경 이미지 또는 타일 파일, 애니메이션 파일, 효과음 파일 등이 해당됩니다. 외부에서 import 하지 않고 Unity에서 생성할 수 있는 오디오 믹서나 랜더 텍스처 그래픽 등도 해당한다고 해요 게임은 순수 코딩으로만으로 개발할 수 없는 영역인 것 같습니다. 매력 있는 캐릭터와 몰입도 있는 그래픽, 타격감 있는 효과음처럼 Asset은 게임 개발에 필수 요소라고 할 수 있습니다. Asset 어떻게 Unity에 추가할 수 있을까요? Asset 다운로드하기 저는 Mystic Woods라는 프로젝트의 무료 Asss..
안녕하세요 점냥입니다. 앞으로 Unity를 2D Top Down RPG Tutorial을 따라가면서 배운 내용들을 블로그에 정리할 예정입니다. 게임 개발은 대학교 때 수업으로 처음 경험했었는데요. 당시 다른 수업 과목보다 게임 개발 수업을 좋아했고 과제에도 밤새 몰두하면서 공부했던 기억이 있어요. 그 정도로 재밌었지만 지금은 Android 개발자로 일하고 있는데요. 최근 운 좋게도 회사에서 사이드 프로젝트 느낌으로 게임 개발을 진행하게 되어서 멀리하던 Unity를 다시 들여보게 되었습니다. 지금 굉장히 설레고 재밌어요! Unity editor: 2022.3.10f1 Tutorial Youtube Link: https://www.youtube.com/watch?v=7iYWpzL9GkM Unity 설치 유니..
안녕하세요. 이번 글에서는 '앱 시작 시간'에 대해서 알아보려고 합니다. 앱 시작 시간은 앱 성능 지표 중 하나인데요. 최근 면접에서 앱 시작 시간에 대한 질문에 대답을 못했어요 하하,, 이번 기회에 한번 같이 알아보면 좋을 것 같죠? 앱 시작 시간이란? 앱 시작 시간은 Android 성능 지표 중 하나로 앱을 로드하는 시간을 의미해요. 구글에서는 사용자의 경험을 위해 앱 시작 시간을 개선하라고 적극 권장하고 있는데요. Google Photo 앱에 시작 시간을 35 퍼 빠르도록 개선했다는 발표도 있었습니다 앱 시작 시간 유형 구글은 앱이 실행되기 전 상태에 따라서 앱 시작 시간 유형을 구분했습니다. Cold Start Cold Start는 앱이 처음부터 시작하는 것을 의미합니다. 기기가 부팅되고 맨 처음..
android { ... compileSdk 33 defaultConfig { minSdkVersion 23 targetSdkVersion 33 } } 최근 minSdk, compileSdk, targetSdk 각 의미에 대해서 물어보는 질문에서 minSdk은 쉽게 대답했지만 compileSdk와 targetSdk의 차이점을 설명하지 못했던 슬픈 경험이 있어 이번 글을 준비하게 되었습니다. 이 글을 보시는 취준생분들이나 면접을 대비하시는 분들은 꼭 대답하실 수 있으면 좋겠네요 Android API Level 이번 블로그에서 알아보는 minSdk, compileSdk, targetSdk 속성의 값으로 Android API Level이 사용됩니다. 그래서 우선 Android API Level에 대해서 알아볼..
안녕하세요 이번 글은 Android WebView에서 파일을 업로드하는 방법에 대해서 소개해보려고 합니다. 이번 주제는 Android WebView는 별도 처리 없이는 웹 사이트의 파일 업로드 기능을 사용할 수 없기 때문입니다. 문제 상황 @SuppressLint("SetJavaScriptEnabled") @Composable fun UploadWebViewScreen() { // File Upload HTML을 사용 val state = rememberWebViewStateWithHTMLData( """ Click on the "Choose File" button to upload a file: """.trimIndent() ) val context = LocalContext.current WebVie..