[Unity]TIL (49) | 2023.10.04 | 유니티 팀프로젝트 마무리

kjg5370·2023년 10월 4일
0

TIL

목록 보기
49/91
post-thumbnail

들어가기 앞서

오늘은 팀 프로젝트를 마무리하고 발표를 하였습니다.
발표 과정에서 튜터님들이 피드백을 해주셨는데
확실히 빨리 진행하려고 놓쳤던 부분들을 지적해주셔서 다시 한번 보면서 생각해보려고 합니다.

진행 사항

기억 할 것

  • 지적 받은 부분 첫 번째
    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 : 내일은 위한 휴식!
profile
학생입니다

0개의 댓글