📅 오늘의 TIL (Today I Learned)
1. 비활성화된 게임 오브젝트와 코루틴 문제
- Unity에서는 비활성화된 게임 오브젝트(SetActive(false))에 속한 스크립트에서 StartCoroutine을 호출할 수 없다.
- 이 문제를 해결하려면 코루틴을 실행하기 전에 게임 오브젝트를 활성화(SetActive(true))해야 한다.
- 이벤트 구독과 게임 오브젝트 상태 관리의 순서가 중요하며, Awake, OnEnable, OnDisable 등 Unity 라이프사이클 메서드를 적절히 사용해야 한다.
2. Unity에서 UI 페이드 효과 구현
- Image 또는 SpriteRenderer의 Color 속성을 조정하여 페이드 인/아웃 효과를 구현할 수 있다.
- Lerp를 사용해 알파 값을 부드럽게 감소시키며 시각적인 자연스러움을 제공.
- IEnumerator를 통해 시간을 기반으로 하는 애니메이션 효과를 코루틴으로 처리.
3. 이벤트 관리
- OnEnable과 OnDisable에서 이벤트를 구독/해제하여 메모리 누수를 방지.
- 이벤트를 사용할 때, 호출 대상이 비활성화되거나 소멸될 가능성을 항상 염두에 두고 코드 작성 필요.
4. 게임 오브젝트의 비활성화 상태 관리
- 특정 UI가 비활성화되어 있을 때도 이벤트를 처리해야 하는 경우, 먼저 해당 게임 오브젝트를 활성화하고 처리하도록 설계.
- 게임 오브젝트 활성화 후 UI 요소만 독립적으로 관리하면 비활성화 상태에서 발생할 수 있는 충돌 방지 가능.
5. 작업 개선
- 이벤트 구독과 UI 상태를 관리하는 로직을 명확히 분리.
- UI가 비활성화된 상태에서도 안정적으로 동작하도록 방어적인 코드 설계 필요.
오늘 배운 내용을 통해 Unity에서 이벤트 기반 UI 시스템 설계의 중요성과 비활성화된 상태의 게임 오브젝트를 다루는 방법을 명확히 이해하게 되었습니다. 앞으로 이러한 문제를 예방하기 위해 방어적인 프로그래밍 습관을 유지하도록 노력해야겠습니다. 💡
'TIL(Today I Learned) > 오늘 무엇을 배웠을까' 카테고리의 다른 글
TIL(Today I Learned) - 81 (0) | 2025.01.15 |
---|---|
TIL(Today I Learned) - 80 (0) | 2025.01.14 |
TIL(Today I Learned) - 78 (0) | 2025.01.10 |
TIL(Today I Learned) - 77 (0) | 2025.01.09 |
TIL(Today I Learned) - 76 (0) | 2025.01.08 |