Unity에서의 최적화 기법 중, 복잡한 걸 제외한 내가 지금 당장 적용할 수 있는 것을 정리해 보았다.
스크립팅 최적화
- Find 관련 함수 사용자제
- 자식이 많은 오브젝트 Transform 변경시 많은 비용 발생
- Update, LateUpdate 등 함수가 비어 있으면 지우자
- Camera.main의 결과를 캐싱하지 않고 수동으로 카메라에 대한 참조를 관리한다
가비지 컬렉터
문자열 관련
- 런타임에 문자열을 작성해야 한다면 stringBuilder 클래스를 작성해야 한다
- 디버깅을 위해 더 이상 필요하지 않게 되면 Debug.Log의 호출을 제거해야 한다
함수 관련
- GameObject.tag 대신 GameObject.CompareTag 사용하기
- Input.GetTouch와 Input.touchCount 대신 Input.touches 사용
- 박싱으로 이어지는 함수 호출 제거
- foreach 문 자제
그래픽 관련 최적화
- 큰 텍스쳐 아틀라스에 개별적 텍스처를 넣는 등의 방법으로 오브젝트의 머터리얼 수를 줄인다
기타 최적화 방법
프로파일링 (기본 or 툴) 어디섯 과부화가 걸리는지 확인
힙 메모리 관련
기타
- 부동 소수점과 정수연산의 속도가 빠르며 부동 소수점 연산의 속도가 벡터, 매트릭스 또는 쿼터니언 연산보다 빠르다.
- 다차원 배열이 필요한 경우 가변 배열 사용
- 델리게이트 사용시 추가 제거가 자주 일어난다면 다른 데이터 구조 사용을 고려