게임 종료 로직과 풀에 활성화된 오브젝트를 반환하는 로직을 이벤트로 관리했는데, 이벤트가 여기저기 흩어져 있어 한번에 파악이 어려워졌다. 이벤트가 아닌 GameManager에서 관련 로직을 관리하게 만들어 한번에 파악하기 쉽도록 변경했다.
public class GameManager : SingletonBase<GameManager>
{
public List<GameObject> activeObjects = new List<GameObject>();
protected override void Awake()
{
base.Awake();
// 매니저 중 DontDestroyOnLoad 인 인스턴스만 주석 활성화하여 사용
DontDestroyOnLoad(this);
}
private void Start()
{
Application.targetFrameRate = 60;
}
public void GameClear()
{
StageManager.Instance.CaculateStars(); // 플레이 정보로 별 계산
StageManager.Instance.SavePlayData(); // 스테이지 플레이 정보 저장
StartCoroutine(EndGameProcess<WinPopup>());
}
public void GameOver()
{
StartCoroutine(EndGameProcess<LosePopup>());
}
private IEnumerator EndGameProcess<T>() where T : UIBase
{
Time.timeScale = 0;
yield return new WaitForSecondsRealtime(0.5f);
UIManager.Instance.ShowPopup<T>();
}
public void ReturnObjects() // 게임 종료나 스테이지 재시작 시 호출
{
while (activeObjects.Count > 0)
{
string objectName = activeObjects[0].name;
PoolManager.Instance.ReturnToPool(objectName, activeObjects[0]);
}
}
private void OnDestroy()
{
ReturnObjects();
}
}'내일배움캠프 > TIL' 카테고리의 다른 글
| [내배캠][Unity6기][TIL] 데이터 로드 리팩토링 (0) | 2024.12.30 |
|---|---|
| [내배캠][Unity6기][TIL] 동적 생성 메서드 경로 설정 리팩토링 (0) | 2024.12.27 |
| [내배캠][Unity6기][TIL] 중간 발표 피드백 (0) | 2024.12.23 |
| [내배캠][Unity6기][TIL] 이중 콜라이더 트러블슈팅 (0) | 2024.12.20 |
| [내배캠][Unity6기][TIL] 애니메이션 단순화 (0) | 2024.12.18 |