[Unity 이슈] Addressable & Android Build 문제 해결법 모음
·
유니티(Unity)/이슈 도감
📌 개요  만약 유니티 프로젝트에서 어드레서블을 사용할 때, 안드로이드 빌드 이슈가 종종 발생합니다. 그럴 때마다 ChapGPT 또는 구글링을 통해 해결하곤 합니다. 오늘은 제가 이때까지 어드레서블 이슈를 경험하며 얻었던 해결책을 정리할까 합니다. (사실 오늘 회사에서 어드레서블 빌드 문제로 2시간 동안 삽질함)   여러분은 저처럼 삽질하지 마시길...     📌 해결책 1. Addressables Groups 체크   [ Window ] - [ Asset Management ] - [ Addressables ] - [ Groups ] 클릭 Addressables Groups은 Asset을 그룹으로 관리하는 핵심 개념이예요. 먼저 위처럼 Group이 잘 추가됐는지 확인합니다.       여기서 중요한..
[Unity 이슈] Sprite Atlas가 딱히 효과가 없는 경우 (SRP Batching 관련)
·
유니티(Unity)/이슈 도감
✍️ 개요  최근에 Sprite Atlas을 사용하고 성능 분석을 해보니 딱히 효과가 없더군요. 물론 위 사진에서는 3개의 Batch가 줄었지만 큰 의미는 없습니다. (FPS가 3배 가량 차이가 나지만 Editor Pause 영향이기에 고려하지 않음) 그렇다면 어떤 차이가 있는걸까요?      📌 문제 상황  위 씬을 구성하는 Sprites을 폴더로 정리하였습니다. 동시에 사용되는 경우에 따라 Sprite Atlas도 제작하였습니다.    하지만 결과는... 개요에서 본 것 처럼 성능 개선이 없었죠. 그래서 다른 요인을 찾기 시작했습니다.    문제는 바로 SRP Batcher 였습니다! URP 프로젝트를 생성하면 위처럼 SRP Batcher가 자동으로 체크되면서 SRP Batching을 수행합니다. ..
[Unity 이슈] Editor에서는 잘 되지만 Build가 안되는 이슈
·
유니티(Unity)/이슈 도감
✍️ 개요  최근에 빌드를 했는데...    위 사진처럼 Package에서 빌드 오류가 발생했습니다. 간혹 빌드 시 일부 스크립트에서 using 구문에서 오류가 발생하곤 합니다. 오늘은 이 부분에 대해서 원인과 해결책을 살펴보도록 하겠습니다.만약 Build 시 아래 오류가 발생한다면 아래 해결책으로 해결될 수 있습니다.  The type or namespace name 'PackageManager' does not exist in the namespace 'UnityEditor'The type or namespace name 'EditorWindow' could not be foundThe type or namespace name 'Editor' does not exist in the namespace ..
[Unity 이슈] Package 파일 참조하는 방법
·
유니티(Unity)/이슈 도감
✍️ 개요  최근에 Custom Package을 만들었는데 위처럼 에셋을 불러오지 못하는 문제를 확인했습니다. AssetDatabase.LoadAssetAtPath 의 경로는 Unity 프로젝트 디렉토리의 루트를 기준으로 하더군요. 그래서 위처럼 절대 경로를 사용하면 안된다는 사실을 깨달았습니다.   📌 해결 방법   AsssetDatabase.LoadAssetAtPath(string path) 메서드를 활용합니다. 루트가 프로젝트 폴더이니 path를 Packages/~로 시작하여 에셋에 접근하면 됩니다. 여기서 중요한 점은, Editor에 표시되는 폴더명이 아니라, pakcage.json에 기재된 패키지명을 적습니다. 잘못된 예 : Packages/DevelopKit/HubTexture.png올바른 ..
[Unity 이슈] InitializeOnLoad 주의 사항
·
유니티(Unity)/이슈 도감
✍️ 개요   이번에 커스텀 패키지를 제작하면서 InitializeOnLoad 어트리뷰트를 사용하면서 시행착오를 많이 겪었죠. InitializeOnLoad를 통해 호출되는 로직은... 매우 조심스럽게 다뤄야 한다는 사실을 뼈저리게 경험했답니다. 지금부터 InitializeOnLoad을 사용할 때 주의할 점을 정리하도록 하겠습니다.      📌 문제 분석  [Unity 이슈] 커스텀 패키지 Addressable 이슈✍️ 개요   [ Custom Package 제작하기 ] [Unity 기능] 커스텀 패키지 제작하기✍️ 개요 유니티를 사용해온 프로그래머라면 사용자 패키지(Custom Package)을 만들고 싶다는 생각이 든 적 있지 않나요?gus6615.tistory.com 이 이슈는 커스탬 패키지를 제..
[Unity 이슈] 커스텀 패키지 Addressable 이슈
·
유니티(Unity)/이슈 도감
✍️ 개요   [ Custom Package 제작하기 ] [Unity 기능] 커스텀 패키지 제작하기✍️ 개요 유니티를 사용해온 프로그래머라면 사용자 패키지(Custom Package)을 만들고 싶다는 생각이 든 적 있지 않나요? 저는 최근에 게임잼이나 신작을 준비할 때마다 빠르게 시작하기 위한 탬gus6615.tistory.com  흐에에에에--! 매우 험난했던 커스텀 패키지 제작기... 사실 이슈가 많았기 때문에 한 번 더 포스팅하도록 하겠습니다. 분명 나처럼 고생하신 분들이 있을거야...      📌 문제 분석  기분 좋게 새로운 프로젝트를 열어서 커스텀 패키지를 설치했어요. 그리고 Sample도 설치해서 잘 작동하는지 확인하는데...     아니... Addressable이 왜 다 빠져있는거임....
[Unity 이슈] 커스텀 패키지 종속성 문제
·
유니티(Unity)/이슈 도감
📌 개요   [ Custom Package 제작하기 ] [Unity 기능] Custom Package 제작하기✍️ 개요  유니티를 사용해온 프로그래머라면 사용자 패키지(Custom Package)을 만들고 싶다는 생각이 든 적 있지 않나요? 저는 최근에 게임잼이나 신작을 준비할 때마다 빠르게 시작하기 위한gus6615.tistory.com  이전에 커스텀 패키지를 만드는 과정을 살펴봤었어요. 그런데 만약 여러분이 스크립트에서 Unity Package Manager을 사용했다면 종속성 문제가 발생했을거예요. 저는 커스텀 패키지에서 Addressable 패키지와 Unitask 패키지를 사용했는데 여기서 문제가 발생했거든요. 그래서 오늘은 종속성 문제를 해결하는 방법에 대해 알아보도록 하겠습니다.     ?..
[Unity] 직렬화가 되지 않는 문제
·
유니티(Unity)/이슈 도감
📌 개요 데이터가 직렬화 되지 않는 문제 해결책① 사용자 정의 클래스에 [Serializable] 속성을 추가했는지 체크② Dictionary 혹은 HashSet을 사용했는지 체크③ Getter/Setter 프로퍼티를 사용했는지 체크   📌 문제 분석 최근에 유저 데이터를 로컬에 저장하는 기능을 구현해봤습니다. 직렬화하여 Json 파일로 데이터를 저장하고 관리하는 작업이었어요. 이미 많이 구현해본 작업이라 빠르게 작업하고 있었는데...      ??? 왜 Json 파일에 Equipment 클래스가 보이지 않는거죠?! 분명 [Serializable] 속성을 붙여서 직렬화를 해줬는데? 과연 원인이 무엇이었을까요?    📌 원인 분석 및 해결책   정답은... Getter 프로퍼티가 원인이었습니다! Ge..
[Unity] SpriteAtlas GetSprite 함수가 동작하지 않는 문제
·
유니티(Unity)/이슈 도감
📌 개요 SpriteAtlas GetSprite 함수가 동작하지 않는 문제 해결책① GetSprite(string name)의 함수 인자가 Packed Sprite Name과 동일한지 체크② Project Settings - Editor - Mode 값이 Sprite Atlas V2 - Enabled 인지 체크   📌 문제 분석 private Sprite GetSprite(AtlasType atlasType, int id){ if (_loadedAtlasTypeDict.TryGetValue(atlasType, out SpriteAtlas atlas)) { return atlas.GetSprite($"{atlasType}_{id}"); } else { ..
[Unity] 마우스 좌표와 월드 좌표 변환 주의 사항
·
유니티(Unity)/이슈 도감
📌 개요 ScreenToWorldPoint 을 사용하여 객체를 생성했는데 객체가 보이지 않는 문제해결책① Input.mousePosition.z 값을 0 혹은 Mathf.Abs(Camera.main.transform.position.z)으로 설정   📌 문제 상황 private void Update(){ if (Input.GetMouseButtonDown(0)) { Vector3 mousePos = Input.mousePosition; CreateJemView(_camera.ScreenToWorldPoint(mousePos)); }} 코드 설명마우스 입력을 받아 [ mousePos ] 변수에 값을 저장[ mousePos ] 을 월드 좌표계로 변환하여 광물 생성..