Resources.Load로 동적 생성을 할 때 Resource 폴더 내 경로를 통해 오브젝트를 가져온다.
이때 메서드 내에 경로 설정을 해놓은 경우 오타 발생 시 문제점을 한 번에 파악하기 어렵고, 폴더 이동 시 해당 메서드 내 문자열을 찾아 변경해주어야 하므로 유지보수가 힘들다.
const string으로 경로명을 변수처럼 사용하면 이러한 문제점을 해결할 수 있다.
[ 수정 전 ]
public class UIManager : SingletonBase<UIManager>
{
public T Show<T>(string path) where T : UIBase
{
string uiName = typeof(T).ToString();
UIBase go = Resources.Load<UIBase>(path + uiName);
var ui = Load<T>(go, uiName);
uiList.Add(ui);
ui.Opened();
return (T)ui;
}
}
public class GameManager : SingletonBase<GameManager>
{
private IEnumerator EndGameProcess<T>() where T : UIBase
{
Time.timeScale = 0;
yield return new WaitForSecondsRealtime(0.5f);
UIManager.Instance.Show<T>("UI/UIPopup/");
}
}
[ 수정 후 ]
public class UIManager : SingletonBase<UIManager>
{
private const string _popupPath = "UI/UIPopup/";
private T Show<T>(string path) where T : UIBase
{
string uiName = typeof(T).ToString();
UIBase go = Resources.Load<UIBase>(path + uiName);
var ui = Load<T>(go, uiName);
uiList.Add(ui);
ui.Opened();
return (T)ui;
}
public T ShowPopup<T>() where T : UIBase
{
return Show<T>(_popupPath);
}
}
public class GameManager : SingletonBase<GameManager>
{
private IEnumerator EndGameProcess<T>() where T : UIBase
{
Time.timeScale = 0;
yield return new WaitForSecondsRealtime(0.5f);
UIManager.Instance.ShowPopup<T>();
}
}'내일배움캠프 > TIL' 카테고리의 다른 글
| [내배캠][Unity6기][TIL] 데이터 로드 리팩토링 (2) (0) | 2024.12.31 |
|---|---|
| [내배캠][Unity6기][TIL] 데이터 로드 리팩토링 (0) | 2024.12.30 |
| [내배캠][Unity6기][TIL] 게임 로직 리팩토링 (0) | 2024.12.26 |
| [내배캠][Unity6기][TIL] 중간 발표 피드백 (0) | 2024.12.23 |
| [내배캠][Unity6기][TIL] 이중 콜라이더 트러블슈팅 (0) | 2024.12.20 |