Contents
접기
728x90
기존 방식의 문제
- Update() + 타이머 → 매 프레임 GetComponent 호출 → 성능 낭비
- 로직이 길어져 가독성이 떨어짐
개선 방법
1. Renderer 캐싱
한 번만 가져와서 계속 사용 → 성능 향상
private Renderer _renderer;
public void Enter(Enemy enemy) {
_renderer = enemy.GetComponent<Renderer>();
}
2. 코루틴으로 시간 제어
타이머 대신 코루틴으로 깔끔하게 반복 처리
private IEnumerator InvisibilityLoop() {
while (true) {
_renderer.enabled = true; // 3초 보이기
yield return new WaitForSeconds(3f);
_renderer.enabled = false; // 1초 숨기기
yield return new WaitForSeconds(1f);
}
}
3. Exit에서 안전하게 정리
상태가 끝날 때는 항상 보이도록
public void Exit(Enemy enemy) {
if (_renderer != null) _renderer.enabled = true;
if (_coroutine != null) enemy.StopCoroutine(_coroutine);
}
최종 구조
- Enter → Renderer 캐싱 + 코루틴 시작
- Update → 필요 없음 (코루틴이 알아서 처리)
- Exit → 코루틴 정리 + 원래 상태 복구
추가 개선
보이는 시간과 숨기는 시간을 변수화
public float visibleTime = 3f;
public float invisibleTime = 1f;
728x90
'GameDevelop > Unity팀프로젝트' 카테고리의 다른 글
Re-Call Unity 3D 팀 프로젝트 회고 (0) | 2025.06.02 |
---|---|
[Unity] 몬스터 죽을 때 아이템 드롭 자연스럽게 배치하기 (0) | 2025.06.01 |
[TeamProject2_2025.05.16] Unity 2D 팀 프로젝트 Oblivia 회고(1등!) (2) | 2025.05.16 |
[TeamProject2_2025.05.14] 오브젝트 풀링/적 시스템 직접 구현(구현편) (0) | 2025.05.14 |
[TeamProject2_2025.05.13] 로그라이크 게임 설계 정리 (설계편) (0) | 2025.05.13 |