모바일 게임 성능 최적화 팁
Unity Korea에서 발표한 모바일 게임 성능 최적화 팁 관련돼서 정리 내용이다.
[유니티 TIPS] 모바일 게임 성능 최적화 - 1편 : [링크]
맹목적으로 최적화를 하지 마라( Dont' optimize blindly )
무조건적으로 최적화를 하는게 좋은 게 아니다 상황을 보고 진행해야 한다.
인력, 일정, 스펙, 하고자 하는 목적 등 여러 가지에 따라 달라질 수 있다. (프로토타입에서는 좀 덜 신경 쓰는 것처럼)
프로파일러를 하는 주체가 어떻게 되냐? 에 대한 이야기도 잠깐 나온다.
( 개인적으로는 모든 사람이 다 연관돼서 하면 좋다고 생각한다. 그러나 프로그래머가 주가 되어야 한다는 말에 동의한다. TA도 하면 베스트이다.)
프로파일러를 진행할 때 타깃을 잡고 진행하라(Profile on the target device)
타깃마다 다른 결과를 나오기 때문에 해당 타깃을 잡고 프로파일러를 진행해서 프로파일링 데이터를 수집하고 결정하는 게 좋다.
정적 Json -> ScriptableObject로 변환해서 사용하면 좋다. ScriptableObject는 기본적으로
if(m_Jump == true)
m_Animator.SetBool("Jump",true);
(string name); -> (int id)로 되어있는 형태로 처리를 하는 게 좋다.
Animator.StringToHash()로 hash id를 가져올 수 있음
CompareTage
Box
Corutines - yield return new WaitForSecond를
매번 new를 처리하지 않는 형태로 진행.
Adaptive Performance
빈 Update 함수도 제거를 하는 게 좋다.
에디터에서만 처리가 되어야 하면 플랫폼 전처리
#if UNITY_EDITOR ~#endif 처리
Debug.Log도 릴리즈에도 포함됨
Symbol 처리 or System.Diagnostics.Conditional("ENABLE_LOG") 처리로 구분
AddComponents는 많은 성능을 저하시키는 것
Find, GetComponent, Camera.main으로 처리하는 것
Cache 처리해서 하는 게 좋음
private Camera mainCamera;
void Start()
{
mainCamera=Camera.main;
}
Object Pools
오브젝트를 하위에서 생성하면서 SetParent (ReParenting)하게 되면
해당 과정으로 성능에 대한 영향이 존재한다.
사용하지 않은 옵션들을 끄자 (Disable unnecessary Player or Quality settings)
physics 물리 처리라던지 frame rate 설정도 필요에 따라 조절하는 것이 좋다.
영향이 가는 Transform 한 개만 수정하는 형태로 처리해라 (Transform once, not twice)
★★★★☆
댓글