목록프로그래밍 (61)
Unity에서 Xcode를 빌드하면 .xcodeproj만 생기고 .xcworkspace만 생길 수 있다 이 때 해결법은 다음과 같다. 1. 터미널로 해당 경로로 이동한다2. pod update를 입력해 pod를 업데이트한다3. xcworkspace가 생겼는지 확인 (생겼다면 다음 빌드부턴 잘 생성된다)-안생겼다면 다시 빌드해 xcworkspace가 생겼는지 확인 원인 : pod업데이트나 플러그인 변경으로 인해 unity build post processer가 xcworkspace를 생성하지 못하는 것.
Firebase Crashlytics는 유니티 프로젝트에서 버그와 크래시를 추적하는 데 유용한 도구입니다. 여기에 Firebase Crashlytics를 유니티 프로젝트에 추가하고 설정하는 단계별 가이드를 제공하겠습니다. ### 1. Firebase Crashlytics 설정하기 1. **Firebase 프로젝트와 연결:** - Firebase 콘솔에서 프로젝트를 생성하거나 기존 프로젝트에 액세스합니다. - 유니티 앱을 Firebase 프로젝트에 추가하고, `google-services.json` 파일(안드로이드) 또는 `GoogleService-Info.plist` 파일(iOS)을 다운로드하여 유니티 프로젝트의 적절한 위치에 추가합니다. 2. **Firebase Unity SDK 설치:** - Fire..
Unity 버전이 2022.3x이상으로 올라가면서 더 이상 Android/res폴더를 사용할 수 없다. firebase push message icon change 파이어베이스 푸시 메세지 아이콘 변경을 위해 AndroidMeniest.xml에 drawable을 설정해 사용했던 경우 이제 더 이상 사용하지 못한다. 이를 위한 해결방법은 다음과 같다. 1. Android경로에 res.androidlib폴더를 만든다 2. 그럼 Unity가 res.androidlib폴더를 안드로이드 패키지로 인식한다 3. 파일탐색기로 해당 경로로 이동 후 res.androidlib폴더 안에 res폴더를 만들고, res폴더 안에 drawable폴더를 추가해 이미지를 넣는다. 4. 그리고 res.androidlib폴더에 다음과 ..
Firebase플러그인 연동 중 task를 사용하니 The type 'Task' exists in both 'Unity.Tasks, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' and 'netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' Assembly-CSharp C:\UnityProjects\HCProto - Copy (3)\Assets\UI\UserDialogManager.cs 10 와 같은 에러가 발생한다. 그리고 Systehttp://m.Threading.Tasks.Task의 Result등도 찾지 못한다. 해결 방법: Unity프로젝트에 Task를 검색..
Generic Type의 변수를 Function의 Parameter로 넘긴 후, Function내에서 해당 Parameter를 init한다고 해도, Function의 stack을 탈출하면 해당 parameter는 null이 된다. 이 이유는 Generic Type의 변수는 값에 의한 전달이 이루어지기 때문이다(클래스의 경우라도) C#에서 제네릭(Generic) 타입으로 변수를 전달할 때, 값에 의한 전달(Call by Value)이 이루어지는 이유는 C#의 설계 결정 사항 중 하나입니다. C#에서 제네릭은 일반적으로 컴파일 시간에 타입을 결정하는 방식으로 동작합니다. 이는 제네릭 타입에 대한 코드를 생성할 때 컴파일러가 실제로 사용될 타입에 대한 복사본을 만들어 사용한다는 것을 의미합니다. 이러한 복사본..
게임 출시를 앞두고, Android플랫폼의 심각한 발열과 낮은 프레임에 대한 최적화를 수행했다. 여러개의 프로젝트를 런칭하면서 쌓인 노하우 및 새로 공부한 지식으로 유의미한 최적화 성과를 거두었기에 최적화 방법을 공유한다. 먼저, 최적화 방법 공유에 앞서 최적화 대상 프로젝트의 스펙은 다음과 같다 -Unity 2021.3.8f로 개발 -URP 프로젝트 -NGUI사용 최적화 성과 (갤럭시 s8기준) FPS : 20~30 -> 50~60 용량 : 400mb -> 300mb 발열 : S22에서 심각한 발열로 인해 30~40fps가 나옴 -> S22와 같은 심각한 발열 기기에서 거의 발열 없이 수십분 이상 구동 가능. 안정적인 60fps유지. 이와같은 성능을 유지하기 위해선 여러가지 복합적인 이유들이 있겠지만,..
1. Scene 전환 시 메모리 문제 씬 전환 중 하위 디바이스에서 메모리 부족으로 앱 크래시 발생 빈 Scene을 만들어 경유 하여 장면 전환 2. Distance검사 게임이 무거워지면서 Distance검사도 부하가 생김 직접 거리를 검사하는 것이 아니라 콜리더 체크로 해결. 3. enum키를 사용하는 Dictionary enum을 사용한 dictionary는 박싱을 발생시키므로, 가비지가 발생된다 타입에 맞는 enum comparer를 만들면 GC가 발생하지 않음. 4. Android Native Crash 5. 메모리 부족으로 인한 크래시 Mono 2.0의 보헴 GC는 단편화에 취약. GC는 Managed Heap GC.Collect의 빈도를 증가 -> OutOfMemory가 크게 줄어듬 5-1. ..
Unity에서 라이트맵을 bake했을 때 특정 텍스쳐/오브젝트의 픽셀이 발게 빛나거나, 깨져보일 수 있다. 이 경우 이유는 UV Overlap혹은 light over lap때문이다. UV Overlap은 배이킹된 lightmap의 openpreview를 눌러 Baked UV Overlap을 통해 확인할 수 있다. 이 경우 라이트맵의 간격을 늘리거나 해상도를 늘리면 해결 가능하다. Lightoverlap은 Unity의 Stitch Seams에 의해 발생하는데, 자세한건 다음의 문서를 확인하라. https://docs.unity3d.com/kr/2020.3/Manual/Lightmapping-SeamStitching.html 라이트맵 경계 부분 꿰매기 - Unity 매뉴얼 심 스티칭(seam stitchin..