[Unity] 최적화

2024. 4. 21. 15:26언어 및 엔진/Unity

최적화

유니티 게임 오브젝트를 찾지 말고 캐싱하라 - FindObject는 느림

오브젝트 풀링 기법을 사용 - Instanitate, Destroy함수의 비용이 큼

Update보다는 Coroutine을 활용 - Update는 매 프레임마다 호출된다.매 프레임마다 호출되는 경우가 아니라면 코루틴 사용

문자열을 연결할 땐 StringBuilder 사용 - 일반적인 String + String은 가비지컬렉터를 돌게 한다. StringBuilder.Append()사용하기

나누기보다는 곱하기 - 나눗셈 보다 곱셈의 연산속도가 몇십 배로 빠름

가비지컬렉션이 최대한 안돌도록 하자 - readonly, const사용

객체 캐싱을 활용 - GetComponent()사용

빈 콜백함수 제거 - Start, Update같은 함수들은 비어있어도 한번씩 돌기 때문에 영향이 있음

디바이스별로 권장하는 압축 텍스쳐 포맷 - 아이폰(powerVR) : RVRCT, 안드로이드(Tegra) : DXT, 안드로이드(Adreno) : ATC, 안드로이드(공통) : ETC!

이미지 가로세로는 무조건 2의 제곱 - Power Of Two 메모리상에서 로드할 때 2의 베곱으로 로드를 하게 되는데, 2의 제곱의 사이즈가 아닌 이미지도 2의 제곱으로 로드하므로 상당한 메모리 낭비가 일어나게 된다.

압축된 텍스쳐와 밉맵 활용 - 32비트가 아닌 16비트의 텍스쳐도 상황에 따라 활용하기

오디오는 92kb모노 인코딩으로 - 모바일에서 스테레오는 의미가 없음. 따라서 92kb모노로 인코딩 하기

오디오는 .wav로 저장 - 용량을 줄이기 위해 mp3로 저장하지 않아도, 자체 인코더가 용량을 원하는데로 압축하기 때문에 음향 손실을 피하기 위해 wav로 저장하기

 

'언어 및 엔진 > Unity' 카테고리의 다른 글

[Unity] Shading Mode  (0) 2024.04.22
[Unity] 모바일 Texture  (0) 2024.04.21
[Unity] Forward / Deffered  (0) 2024.04.21
[Unity] Lambert광원 / Specular  (0) 2024.04.21
[Unity] Light Map Bake  (0) 2024.04.21