목록전체 글 (71)
유니티 2017.2이하 버전 혹은 5.x를 사용하는 경우 구글 정책의 변경으로 TargetAPI Level을 28이상으로 설정해줘야 하는 문제에 대응하기 위해 고생을 할 것이다. 2019년 8월부터 32비트의 경우 신규 앱 등록을 못하고, 11월부터는 API28이하는 기존 출시 앱이라도 업데이트를 못하게 된다. 그리고 2021년 11월부터는 32비트 앱에 대한 모든 출시/업데이트의 지원을 중단하게 되므로 미리미리 대비하도록 하자 그래서 이번 글에서는 Unity에서 Latest Build Target이 27미만인 Unity버전을 사용하는 분들을 위해 강제로 BuildTarget버전을 지정하는 방법에 대해 포스팅하겠다. 1. Unity빌드 설정을 Gradle로 변경 Unity의 BuildSetting에서 B..
안녕하세요. C++을 이용한 프로그램을 작성한다면 사소하지만 신경써야 할 부분에 관하여 포스팅하겠습니다. 일반적으로 작업을 하다보면 클래스나 구조체를 다른 객체로 복사할 경우 memcpy를 이용할지 =(operator)를 이용할지 판단이 어려운 경우가 있습니다. 아니면 그냥 무조건적으로 =를 사용하고 계신 분들이 있을 수도 있습니다. memcpy와 operator=의 특성과 주의점을 잘 파악해 상황에 따라 이용하도록 합시다 * memcpy 작동 방식 : 구조체(클래스) 크기의 메모리를 복사한다 속도 : 빠르다 주의 사항 : 일반적인 MFC구조체(ex:CString)와 같은 별도로 관리하는 메모리나 포인터같은 변수가 있을 경우 오작동의 우려가 있음. 메모리 크기를 정확하게 대입해야함 * operator =..
Unity에선 split application binary 기능을 지원한다. 이 기능을 통해 기본 앱(APK)파일과 .obb확장 파일을 만들어 낼 수 있다. 하지만, Application.dataPath를 이용해 특정 경로에서 파일을 가져와 사용하는 처리가 있다면 주의해야한다. Unity Documentation에 다음과 같은 내용이 있다. *** Android: Normally it would point directly to the APK. The exception is if you are running a split binary build in which case it points to the the OBB instead. *** 기본적으로 Android Platform에서 Application.da..
Android플랫폼의 Unity에서 .mp4등 미디어 파일을 재생해야 할 일이 있을 것 이다. 게임 실행시 인트로에서 동영상을 재생시킨다든가, 튜토리얼을 영상으로 제공한다든가 등 사용되는 곳이 많다. 프로젝트가 마무리 단계에 접어들어, shell command를 통해 빌드를 자동화 하는 중 처음보는 현상을 마주치게 되었다. E/Unity: AndroidVideoMedia::VideoDecoder::Blit failed. Decode shader probably unsupported. 원래, 게임 설치 후 최초 실행하면 인트로 영상이 나와야 할 타이밍에 영상이 나오지 않고 검은 화면만 노출되는 현상이었다. 자동화 빌드에 문제가 생겼나? 하고 원인을 파악해보니 다음과 같았다. - Unity Editor를 통..
안녕하세요 이번엔 안드로이드 빌드 결과물로 나온 APK의 AndroidManifest를 디컴파일(Decompile)해서 해당 내용을 들여다보고, 분석하는 자동화 배치 파일을 만들어보겠습니다. 규모가 큰 하나의 프로젝트를 여러 플랫폼으로 빌드하다 보면, 플랫폼에 따라 필요한 .aar이나 기타 라이브러리 파일의 관리가 점점 어려워집니다. Google Play Resolver를 사용하고, 직접 aar파일을 관리해주곤 해도 결국 어디선가 실수를 하거나 구멍이 나거나 하면 이유를 찾지 못해 시간을 낭비하곤 합니다. 저는 원스토어, 플레이스토어, 여러 국외 마켓 등 여러가지 플랫폼으로 빌드하는 과정에서 AndroidManifest에 의도치 않은 Permission등이 들어가 중복 설치가 안되거나 하는 것 때문에 꽤..
Windows Batch Command나 젠킨스(Jenkins)등을 이용해 자동화 시스템 등을 만들어야 하는 일이 종종있다. 필자는 비개발자들도 사용할 수 있도록 툴을 제공하기 위해 가장 많이 만들었던 것 같다. 윈도우의 경우 배치 명령어를 통해 .bat 확장자 파일을 만들어 사용해도 되지만, 쉘 스크립트가 익숙하다면 .sh확장자 파일을 만들어 사용하자 아무 폴더에나 .bat혹은 .sh파일을 생성하고 다음과 같이 적는다 "유니티설치경로\Unity\Editor\Unity.exe" -quit -batchmode -logFile "빌드 로그파일이 생성될 위치"\build_log.log -buildTarget win32 -projectPath "프로젝트경로" -executeMethod "클래스명"."함수명" U..
출근 하자마자 클라이언트 앱이 뻗는 이슈를 제보받았다. 발생 시점을 조사해보니 캐릭터가 다리를 지나가면 해당 다리가 뒤따라오며 무너지는 연출이 발생하는 시점에서 간헐적으로 해당 이슈가 발생했다. 에러 구문 중 핵심은 다음과 같다. transform.position assign attempt for 'monster_agent(Clone)' is not valid. Input position is { Infinity, Infinity, Infinity }. UnityEngine.AI.NavMeshAgent:Warp(Vector3) ... ... CalculatePolygonPath: invalid input position(s). Source position { Infinity, Infinity, Infin..