지적 받은 부분 첫 번째
UIManager를 만들어서 전체적인 UI들을 관리했는데 중간 중간 UIManager를 통해서 UI를 관리하는 것이 아니라 다른 곳에서 UI등을 할당하는 것이 보이고 이것은 싱글톤으로 사용하는 의미가 약해진다라고 하셨습니다.
UIManager
public class UIManager : MonoBehaviour { public static UIManager instance; public TextMeshProUGUI NotEnoughGoldTxt; public TextMeshProUGUI highScoreTxt; public TextMeshProUGUI scoreTxt; private Coroutine goldMessageCoroutine; private bool isSpeedUp = false; void Awake() { if (instance == null) { instance = this; } } private void Start() { if (PlayerManager.Instance != null) { PlayerManager.Instance.OnGameOver += setScoreTxt; } } private void setScoreTxt() { highScoreTxt.text = PlayerManager.Instance.highScore.ToString(); scoreTxt.text = PlayerManager.Instance.score.ToString(); } public void MainSceneButton() { Time.timeScale = 1f; SceneManager.LoadScene("MainScene"); AudioManager.instance.PlaySfx(AudioManager.Sfx.ButtonClick); AudioManager.instance.PlayBgm(true); } public void StartSceneButton() { Time.timeScale = 1f; AudioManager.instance.PlaySfx(AudioManager.Sfx.ButtonClick); SceneManager.LoadScene("StartScene"); AudioManager.instance.PlayBgm(false); } public void Pause() { Time.timeScale = 0f; AudioManager.instance.PlayBgm(false); AudioManager.instance.PlaySfx(AudioManager.Sfx.ButtonClick); } public void Resumed() { Time.timeScale = 1f; AudioManager.instance.PlayBgm(true); AudioManager.instance.PlaySfx(AudioManager.Sfx.ButtonClick); } public void SpeedUpGame() { isSpeedUp = !isSpeedUp; if (isSpeedUp) { Time.timeScale = 2f; } else { Time.timeScale = 1f; } AudioManager.instance.PlaySfx(AudioManager.Sfx.ButtonClick); } public void SetGameObjectActive(GameObject gameObject, bool active) { gameObject.SetActive(active); } public void ShowGoldMessage() { if (goldMessageCoroutine != null) { StopCoroutine(goldMessageCoroutine); } goldMessageCoroutine = StartCoroutine(DisplayGoldMessage()); } private IEnumerator DisplayGoldMessage() { NotEnoughGoldTxt.text = "골드가 부족합니다."; yield return new WaitForSeconds(1.0f); NotEnoughGoldTxt.text = string.Empty; } public static void InitializePlayerPrefs() { PlayerPrefs.DeleteAll(); PlayerPrefs.Save(); } }
UIManager가 UI기능들을 거의 가지고 있지만 PlayerManager를 만들 때 플레이어가 가진 골드라든디 HP 같은 수치를 빨리 보려고 PlayerManager에 할당 했던것을 고치지 못했던 것 같습니다. 다음에는 각 스크립트의 역할에 맞게 잘 나눠서 구분해보겠습니다.
지적 받은 부분 두 번째
플레이어의 골드를 증가시키는 부분에서 IncreaseGold() 함수를 만들어 놓고 업데이트 문으로 골드를 증가시키는 것은 의미가 없는 것 같다고 하셨습니다.
PlayerManager
... //생략 private void Update() { if (goldTxt != null) { if (gold <= 99999) { goldTxt.text = gold.ToString(); } else { goldTxt.text = "99999"; } } } ... //생략 private void IncreaseGold() { gold += 50; } ... //생략 }
첫 번째 지적받은 부분과 겹치게 플레이어의 골드를 플레이어 매니저에 표시하려다가 이 부분을 빠르게 작성하고 넘겨버린 것 같습니다. 다음에는 UIManager에서 골드를 보여주는 함수를 만들어 플레이어의 골드가 증가할때만다 함수를 실행하는 등의 방법을 사용하여 UI를 잘 표현해 보겠습니다.
09:00 ~ 10:00 : 알고리즘 코드카타
12시-1시: 점심식사
14:00 ~ 18:00
6시-7시: 저녁식사
19:00 ~ 20:00 : 집중 코딩 시간 부족한 부분 해결해보기
20:00 ~ 21:00: TIL 작성, 마무리 회고 진행
21:00 : 내일은 위한 휴식!