
learn.unity.com/tutorial/optimizing-unity-ui?language=en# Optimizing Unity UI - Unity Learn Optimizing a user interface driven by Unity UI is an art. This guide will discuss the fundamental concepts, algorithms and code underlying Unity UI as well as discussing common problems and solutions. learn.unity.com 1. Unity UI 최적화 가이드 Unity UI를 최적화 할 때의 핵심 긴장은 일괄 처리 비용과 드로 콜의 균형입니다. 일부 상식적인 기술을 사용하여 둘 중..

youtu.be/eH-PdFKgctE UI Batching UI Batching Rule 2개이상의 비주얼컴포넌트가 있을때 UI Batch가 일어납니다. 같은 Canvas 일것 같은 Material을 사용할것 같은 Sprite Atlas를 사용할것 RectTranform이 서로 동일평면에 일것. (같은 z positon) 같은 Mask에 clipped될것 UI Batch를 확인하려면 FrameDebugger와 Profiler의 UI항목을 이용하여 볼 수 있음. Profiler에서는 Batch Breaking Reason도 확인 가능. TextMesh Pro Text 컴포넌트는 각 글자(character)마다 mesh를 생성함. outline이나 shadow 효과를 주려면 복사된 텍스트로 제어하여 mesh..

youtu.be/_jW_D2vF9J8 UI 내비게이션 프리팹에서 ui view를 인스턴스화 vs 씬에 ui view를 미리배치 프리팹에서 인스턴스화 UINavigation.Push("Library") 실행 마지막 UIView 의 Hide 실행 Library UIView 프리팹 인스턴시에이트 후 Show실행 생성된 UIView를 히스토리 스택에 Push UINavigation.Pop() > 마지막 view를 파괴 이 구조에서는 동일한 페이지의 prefab이 존재, 같은 페이지라도 다른 컨텍스트가 존재해야할때. 컨텍스트복구가 쉽다. 플레이버튼을 누르기전, 남아있는 뷰가 없어야함. 히스토리가 증가 > 뷰 게임오브젝트가 계속 증가가능. 같은페이지 & 다른컨텍스트를 복구할 일이 별로없음. 씬에 미리 배치 Push..

Sprite Atlas 기본적인 사양과 내용은 유니티 메뉴얼 참고 다만, allow rotation시 이미지끼리 겹치는 상황이 발생할 수 있다 그경우 Custom outine으로 경계선을 정해주고 Image Component에서 Use Sprite Mesh 옵션을 켜야 피할 수 있다. 다만 이 경우는 image Type이 simple일때만 가능함. Atlas에서 특정 sprite를 script로 가져올 수 있음 (lazy binding) GetSprite해서 바인딩 하는 시점에서 atlas를 load하기에 lazy하다는 표현. UI최적화 관련 정리 빌드사이즈관련 - asset이 무압축일 경우 빌드사이즈 증가경향, png 권장. UGUI는 Canvas마다 각자의 Vertex buffer를 가지고 있기 때문..

youtu.be/8l9fEjiC2qE In Unity Profiler 2020.1부터는 프로파일러와 에디터랑 분리하여 확인할 수 있음. GPU의 경우 Legacy쉐이더만 확인이 가능. 안드로이드와 iOS도 안됨.. In Memory Profiler In Frame Debugger 왜 Batching이 깨지는지 알려줌. 정리 Unity Profiler에 나오는 Tag에 익숙해지자. 모바일에서는 TotalMemory보다 Bandwidth가 더 중요한 척도이다. XCode에는 Instruments라는 툴이 있음. GPU Vender에서 제공해주는 Profiling툴이 있음. 안드로이드의 경우 탈옥해야가능... 프로파일링을 할때 최저사양을 설정 최저사양에서 현재예산을 측정 남은 버젯을 기준으로 최적화 전략을 선..
youtu.be/tT9LS53HRx4 ScriptCode 작성팁 ObjectPooling 다수 동일한 객체를 자주 생성/삭제가 발생하면 GC의 동작이 많아지게되고 이는 곧 전체 CPU사용량에 부정적인 영향을 주게된다. Object Pool을 통해 게임내에서 사용할 객체를 미리 충분한 개수만큼 생성하였다 필요한 순간 꺼내서 사용하고 끝나면 Pool에 반납하는 시스템. Pool의 크기결정이 중요하며, Pool의 크기를 넘는 개수를 사용해야되는 상황에 대한 보조적인 조치가 필요하다. Sciprtable Object 게임에서 변하지 않는 데이터를 위한 클래스를 작성하는 경우 Monobehaviour보다 Scriptable Object를 상송하여 객체를 작성하는것을 추천함. Mono에 비해 메모리 사용량도 적고 ..

youtu.be/znfyEhpsXkU Galaxy GameSDK (samsung) 사용목적 모바일디바이스의 상태정보 온도 발열상태 bottleneck 실시간으로 성능/품질 조절 급격한 성능저하 회피 적용예 동적변환 퀄리티요소 Shadow distance Foliage LOD Animation LOD Target Framerate Feature Parameter (변하는 양) Scaling Impact Shadow Distance 80~50 CPU 0~10% offloading Foliage LOD 1~0.8 GPU 0~5% offloading Animation LOD 0~2 CPU 0~3% offloading GPU 0~1% offloading Target Frame Rate 60~57 CPU 0~5% ..
간략히, 디바이스상태(정상/쓰로틀링직전/쓰로틀링상태, CPU delay, GPU delay)에 따라 targetFrameRate를 조절하거나 CPU/GPU level의 조정, LOD의 제어를 하게하는 기술 (삼성 디바이스에서만 가능..) 더보기 Adaptive Performance Samsung (Android)은 현재 Android 10을 실행하는 다음 Samsung 장치를 지원합니다. 모든 구형 및 신형 Samsung Galaxy 모델 Samsung GameSDK 3.2+가 설치된 장치를 지원합니다. 가변 주사율 은 현재 Galaxy S20에서만 지원됩니다. [메가시티프로젝트 다운로드] Unity 패키지 관리자를 통해 어댑티브 퍼포먼스를 설치한 후 디바이스에 프로젝트를 빌드하면, Unity에서 삼성 ..
- Total
- Today
- Yesterday