Unity 정적 게임 오브젝트 매뉴얼 해설
개요
Unity에서는 동작하지 않는 게임 오브젝트를 "정적 게임 오브젝트"라고 하며, 이러한 오브젝트는 런타임 시점에서 움직이지 않습니다. 반면, "동적 게임 오브젝트"는 런타임 중에 움직일 수 있는 게임 오브젝트입니다. Unity는 정적 게임 오브젝트에 대한 정보를 미리 계산하여 성능을 최적화할 수 있습니다.
정적 게임 오브젝트의 이점
정적 게임 오브젝트를 사용하면 아래와 같은 이점을 얻을 수 있습니다: - 성능 향상: 런타임 계산을 줄여 성능을 개선합니다. - 메모리 최적화: 불필요한 데이터 크기를 줄이고, 예기치 않은 동작을 방지합니다.
Static Editor Flags 프로퍼티
Unity의 인스펙터에서 Static Editor Flags 체크박스를 통해 정적 게임 오브젝트 설정을 조정할 수 있습니다. 이 프로퍼티는 여러 시스템에서 사전 계산을 할지 여부를 설정하는 데 사용됩니다.
가능한 값
값 | 기능 |
---|---|
Nothing | 모든 시스템에 대한 사전 계산에 게임 오브젝트를 포함하지 않습니다. |
Everything | 아래의 모든 시스템에 대한 사전 계산에 게임 오브젝트를 포함합니다. |
Contribute GI | 유니티가 전역 조명 계산에 관련된 메시 렌더러를 포함하게 합니다. |
Occluder Static | 오클루전 컬링 시스템에서 게임 오브젝트를 정적 오클루더로 표시합니다. |
Occludee Static | 오클루전 컬링 시스템에서 게임 오브젝트를 정적 오클루디로 표시합니다. |
Batching Static | 메시를 다른 적합한 메시와 결합하여 런타임 렌더링 부하를 줄입니다. |
Navigation Static | 내비게이션 데이터를 미리 계산할 때 게임 오브젝트를 포함합니다. |
Off Mesh Link Generation | 오프 메시 링크를 생성하려고 시도합니다. |
Reflection Probe | Reflection Probes의 데이터를 미리 계산할 때 이 게임 오브젝트를 포함합니다. |
코드 예제
Static Editor Flags 프로퍼티를 설정하는 방법 중 하나는 아래의 코드 예제와 같이 GameObjectUtility.SetStaticEditorFlags
API를 활용하는 것입니다.
GameObjectUtility.SetStaticEditorFlags(gameObject, StaticEditorFlags.ContributeGI);
이를 통해 코드에서 정적 게임 오브젝트의 플래그를 쉽게 설정할 수 있습니다.
활용 및 응용 예제
- 정적 게임 오브젝트 생성:
- 환경 오브젝트(빛, 건물 등) 생성 시, 이들을 정적으로 설정합니다. 이는 전역 조명 및 오클루전 컬링의 최적화에 도움을 줍니다.
- 정적 배칭 활용:
- 여러 정적 게임 오브젝트를 결합하여 배치하면 렌더링 성능을 더욱 높일 수 있습니다.
- 내비게이션 설정:
- AI 캐릭터가 경로를 탐색할 수 있도록 내비게이션 맵을 미리 설정할 때 유용합니다. 정적 오브젝트를 포함시켜 계산 과정을 최적화할 수 있습니다.
이 문서가 Unity에서 정적 게임 오브젝트를 활용하는 데 도움이 되길 바랍니다. 각 시스템의 세부 사항은 Unity 공식 문서를 참조하여 더 심층적으로 이해할 수 있습니다.