Unity 프로젝트 최적화 기법을 실습과 이론으로 다루는 세미나입니다.
-
Camera.main은 내부적으로FindGameObjectWithTag를 호출하므로 비용이 높습니다. -
GameObject.transform의 반복 호출은 C#$\leftrightarrow$ C++ 마샬링/언마샬링 오버헤드를 유발합니다. - Transform 캐싱 적용 시 7.5배 성능 개선 (18.87ms
$\rightarrow$ 2.50ms)을 달성했습니다.
자료: PDF
- 내부 개발 프로젝트의
VolumetricLight.ShadowsUpdate()함수에서 Transform 캐싱을 적용했습니다. - 30개의
OcclusionCam오브젝트가 LateUpdate에서.transform을 반복 접근하여 병목이 발생했습니다. - Transform 캐싱으로 69,155배 성능 개선 (2074.66ms
$\rightarrow$ 0.03ms)을 달성했습니다.
- MonoBehaviour의 Update는 C++
$\rightarrow$ C# 호출 비용이 누적되어 성능 저하를 일으킵니다. - 10,000개 Update 호출 시
ManagedBehaviour구조가 52.3% 성능 개선을 보였습니다. - 수천 개 이상의 Update가 필요하다면 C# 레벨의 업데이트 관리 구조를 사용하세요.
자료: 준비 중
Camera.main과transform은Awake()/Start()에서 캐싱- 반복 사용되는
Vector3같은 값 타입도 캐싱 - 다수의 Update 호출이 필요하면 커스텀 관리 시스템 구현
unity-optimization-seminar/
├── 01/ # Transform 캐싱 실험 및 분석
├── 02/ # 실전 적용 사례
├── 03/ # Update 최적화
└── UnityProject/