본문 바로가기

Unity 간단 기능 정리 모음 #7

@코야딩구2025. 8. 14. 09:38

1. Inspector 창의 Static 속성

📌 역할

- Unity의 Inspector에서 오브젝트를 Static으로 체크하면, 해당 오브젝트가 절대 이동·회전·크기 변경이 없는 고정물임을 엔진에 알린다.
- 이렇게 설정하면 Unity는 해당 오브젝트를 **정적 배칭(Static Batching)**에 포함시켜 Draw Call을 줄인다.

- 정적 배칭은 CPU 부하 감소 + GPU 최적화 효과를 제공한다.

💡 실전 팁

- 맵 전체의 건물, 지형, 도로처럼 절대 움직이지 않는 오브젝트에 Static을 적용한다.

- 단, Static 체크 시 런타임에서 Transform 변경이 불가능하므로, 움직이는 오브젝트는 Static 설정 금지해야 한다.

- 최적화 추가 팁: Static 항목은 ‘Lightmap Static’, ‘Occluder Static’ 등 세부 옵션별로도 설정 가능하다. 불필요한 Static 속성은 꺼서 빌드 최적화를 유지하자.

2. GameObject 비활성화 상태에서의 생명주기

📌 동작 원리

- 씬 시작 시 SetActive(false) 상태라면 Awake(), OnEnable(), Start()가 실행되지 않는다.

- 이후 처음 SetActive(true)가 되는 시점에 → Awake(1회)OnEnable(매번)Start(다음 프레임에서 1회) 순으로 호출된다.

- 비활성 상태에서는 Unity의 실행 루프에서 제외되므로 Update() 같은 프레임 기반 함수도 호출되지 않는다.

3.  부모-자식 활성화 규칙

📌 동작 원리

- 자식이 꺼져 있다면 → 부모를 켜도 계속 꺼져 있다.

- 자식이 켜져 있다면 → 부모를 켜면 함께 켜진다.

💡 주의

- UI 패널 구조에서 부모 패널을 꺼도 자식 버튼은 자동으로 꺼진다.

- 하지만 자식 버튼을 따로 꺼놓으면, 부모 패널을 켜도 자식은 다시 켜지지 않는다.

- 이 동작은 activeSelf(자체 상태)와 activeInHierarchy(계층 상태)의 차이에서 기인한다.

4. SetActive() 성능 비용

📌 이유

- 비활성화 시: 컴포넌트 상태 변경, 이벤트 해제, 트리 구조 재정리 등 CPU 작업이 발생한다. 

- 다시 활성화 시: OnEnable() 호출, 이벤트 재등록, 상태 복원 등 CPU 작업이 발생한다.

- 따라서 이 과정은 Unity 내부적으로 렌더링/물리 시스템 재등록까지 포함하므로 빈번한 호출은 성능 저하를 유발한다.

💡 실전 팁

-  UI 패널 전환 시 SetActive() 반복 대신 CanvasGroup의 alpha 값과 interactable/blocksRaycasts 속성을 제어하면 훨씬 가볍다.

5. UI Image Type - Fill

📌 특징

- Image 컴포넌트의 Fill Mode를 이용하면 체력바, 쿨타임 게이지, 로딩바 등 진행도를 직관적으로 구현할 수 있다.

- 언리얼과 달리 Unity는 2D 스트라이프 패키지에서 제공하므로 셰이더 작업이 필요 없다.

6. 애니메이션 아바타(Animation Avatar)

📌 역할

- Humanoid 리깅에서 캐릭터의 본 구조(Bone Structure) 매핑 정보를 담는 데이터다.

- 서로 다른 캐릭터 모델이라도 동일한 애니메이션을 재활용할 수 있게 한다.

💡 예시

- 남성 캐릭터 애니메이션을 여성 캐릭터에도 동일하게 적용 가능하다.

- NPC, 플레이어 모델 간 애니메이션 재활용이 가능하다.

- 즉 동일한 본 구조를 가진다면 여러 스킨(외형)에 동일한 애니메이션 사용 가능하다.

목차