목록unity (11)
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 GPGS연동으로 로그인 기능을 구현하는 중 로그인 요청시 'returning an error code'와 같은 에러 코드를 확인할 수 있다. 앱을 공개게시(정식 출시) 하지 않은 상태의 경우 위 에러가 발생할 수 있는데, 내부테스트 트랙, 혹은 비공개베타 트랙을 이용해 앱을 테스트 한다면 주의해야 한다. 원인은, 로그인 요청하는 계정이 테스터에 등록되어 있지 않아서인데, 아래 3가지 케이스를 확인해보길 바란다. 1. Google Play Console의 앱 설정에서 P[lay 게임즈 서비스/테스터] 항목에 로그인을 시도하는 계정이 '테스터'로 등록되어 있는지 확인해보자. 등록되어 있지 않다면, 이메일 주소를 추가 후 잠시 기다려준 후 다시 시도해보자. 2. 구글 앱 프로젝트의 Google Co..
2021년 8월부터 Google Play Store에선 obb를 이용한 대용량 앱 업로드가 사라지고, 무조건 Play Asset Delivery(PAD)를 통해 앱을 업로드 해야합니다. 제발 정책좀 그만 변경했으면 좋겠습니다. 먼저 제가 궁금했던 부분에 대해 알아낸 결론부터 말씀드리겠습니다. Q1. 이제부터 에셋을 무조건 번들로 묶어서 빌드를 해야하나? 에셋 번들을 묶는법을 알아야하나? A1. 아닙니다. 기존 대용량 앱 빌드와 같이 포함될 씬들을 모두 선택하고 그냥 빌드해도 됩니다. 방법은 변했습니다. Q2. 빌드 과정/시간이 복잡/길어졌나? A2. 과정이 조금 번거로워졌고, 빌드에 걸리는 시간 자체는 많이 늘어난 것 같습니다 그럼, 시간낭비 말고 방법을 설명해드리도록 하겠습니다. 1. 먼저 PAD Un..
출시 준비를 하기 위해 SDK들을 모두 최신 버전으로 설치하고자 유니티 2020.1.3f 버전으로 업데이트 후 SDK작업을 진행하였다 아래는 그때 발생한 빌드 에러 중 하나이다 > Could not delete old C:...\Temp\gradleOut\launcher\build\reports\lint-results-release-fatal.html UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&) 해당 오류의 발생 사유는 첫번째 빌드가 실패 후, 다시 빌드를 시도하였을 때 특정 프로세스가 전 빌드에서 발생된 temp경로의 파일 중 하나를 사용중에 있어 그렇다 해결 방법은 1. 컴퓨터를 리부팅 한다 2. 직접 해당 경로에 들어가 관리자 권한으로..
처음 개발일지를 올리고 그 이후 생각보다 많이 진행이 되었습니다. 간단한 UI연출, 기본적인 유닛 조작 등 조금이지만 윤곽이 보이기 시작하네요
코드 원문 : using System.IO; using UnityEngine; public static class ColorUtils { /// /// 지정된 16 진수 색상으로 변환합니다 /// /// /// /// // RGBA (1.000, 0.502, 0.000, 1.000) /// ColorUtils.ToARGB (0xFFFF8000) /// /// public static Color ToARGB ( uint val) { var inv = 1f / 255f ; var c = Color.black; ca = inv * ((val >> 24 ) & 0xFF ); cr = inv * ((val >> 16 ) & 0xFF ); cg = inv ..
코드 원문 : using System; using System.Collections; using UnityEngine; public static class CoroutineCommon { private static readonly MonoBehaviour mMonoBehaviour; static CoroutineCommon () { var gameObject = new GameObject ( "CoroutineCommon" ); GameObject.DontDestroyOnLoad (gameObject); mMonoBehaviour = gameObject.AddComponent (); } public static void CallWaitForOneFrame (Action act) { mMonoBehavio..
코드 원문 : public static class StringExtensions { public static string RemoveNewLine( this string self ) { return self.Replace( "\r", "" ).Replace( "\n", "" ); } } 사용법: var str = "피카츄 \n망나뇽" ; str = str.RemoveNewLine (); 참고: http://www.atmarkit.co.jp/fdotnet/dotnettips/1000removecrlf/removecrlf.html