Unity 내가 할 수 있는 최적화

박지예·2023년 9월 20일
0

공부

목록 보기
33/42

Unity에서의 최적화 기법 중, 복잡한 걸 제외한 내가 지금 당장 적용할 수 있는 것을 정리해 보았다.

스크립팅 최적화

  • Find 관련 함수 사용자제
  • 자식이 많은 오브젝트 Transform 변경시 많은 비용 발생
  • Update, LateUpdate 등 함수가 비어 있으면 지우자
  • Camera.main의 결과를 캐싱하지 않고 수동으로 카메라에 대한 참조를 관리한다

가비지 컬렉터

  • 오브젝트 풀링 사용

문자열 관련

  • 런타임에 문자열을 작성해야 한다면 stringBuilder 클래스를 작성해야 한다
  • 디버깅을 위해 더 이상 필요하지 않게 되면 Debug.Log의 호출을 제거해야 한다

함수 관련

  • GameObject.tag 대신 GameObject.CompareTag 사용하기
  • Input.GetTouch와 Input.touchCount 대신 Input.touches 사용
  • 박싱으로 이어지는 함수 호출 제거
  • foreach 문 자제

그래픽 관련 최적화

  • 큰 텍스쳐 아틀라스에 개별적 텍스처를 넣는 등의 방법으로 오브젝트의 머터리얼 수를 줄인다

기타 최적화 방법

프로파일링 (기본 or 툴) 어디섯 과부화가 걸리는지 확인

힙 메모리 관련

  • 오브젝트 풀링 사용

  • 박싱 피하기 (ex) enum type을 Dictionary의 키로 사용하면 박싱이 발생한다

  • Resources 폴더 사용하지 말고 Asset Bundle을 사용하자

기타

  • 부동 소수점과 정수연산의 속도가 빠르며 부동 소수점 연산의 속도가 벡터, 매트릭스 또는 쿼터니언 연산보다 빠르다.
  • 다차원 배열이 필요한 경우 가변 배열 사용
  • 델리게이트 사용시 추가 제거가 자주 일어난다면 다른 데이터 구조 사용을 고려
profile
언젠간 바다로 갈거야!🐋

0개의 댓글