목록프로그래밍/ㄴ기타 (25)
Firebase Crashlytics는 유니티 프로젝트에서 버그와 크래시를 추적하는 데 유용한 도구입니다. 여기에 Firebase Crashlytics를 유니티 프로젝트에 추가하고 설정하는 단계별 가이드를 제공하겠습니다. ### 1. Firebase Crashlytics 설정하기 1. **Firebase 프로젝트와 연결:** - Firebase 콘솔에서 프로젝트를 생성하거나 기존 프로젝트에 액세스합니다. - 유니티 앱을 Firebase 프로젝트에 추가하고, `google-services.json` 파일(안드로이드) 또는 `GoogleService-Info.plist` 파일(iOS)을 다운로드하여 유니티 프로젝트의 적절한 위치에 추가합니다. 2. **Firebase Unity SDK 설치:** - Fire..
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. ..
유니티 모바일 환경에서 spine의 mixandmatch를 사용했을 경우 텍스쳐가 깨지는 문제가 있다. 이 경우 텍스쳐의 read/write옵션을 활성해주면 해결된다.
게임을 글로벌에 출시하기 위해 이것저것 언어를 변경하다 보면 일본어, 한자, 혹은 인도네시아어 등등 여러가지 폰트가 깨져 보이는 문제가 발생한다. 이로 인해 언어마다 폰트를 다르게 지정해주어야 하는 이슈가 있다. 필자는 NGUI를 사용하고 있기에 NGUI를 기준으로 다음과 같이 구현하였다. 최초 게임을 실행했을 때 다음과 같이 언어에 따른 폰트 파일을 가져와준다 public static Font m_vGlobalFont = null; ... if (IsGlobalUser()) { eLang = Application.systemLanguage; switch (eLang) { case SystemLanguage.Japanese: if (m_vGlobalFont == null) m_vGlobalFont = R..
2021년 8월부터 Google Play Store에선 obb를 이용한 대용량 앱 업로드가 사라지고, 무조건 Play Asset Delivery(PAD)를 통해 앱을 업로드 해야합니다. 제발 정책좀 그만 변경했으면 좋겠습니다. 먼저 제가 궁금했던 부분에 대해 알아낸 결론부터 말씀드리겠습니다. Q1. 이제부터 에셋을 무조건 번들로 묶어서 빌드를 해야하나? 에셋 번들을 묶는법을 알아야하나? A1. 아닙니다. 기존 대용량 앱 빌드와 같이 포함될 씬들을 모두 선택하고 그냥 빌드해도 됩니다. 방법은 변했습니다. Q2. 빌드 과정/시간이 복잡/길어졌나? A2. 과정이 조금 번거로워졌고, 빌드에 걸리는 시간 자체는 많이 늘어난 것 같습니다 그럼, 시간낭비 말고 방법을 설명해드리도록 하겠습니다. 1. 먼저 PAD Un..