🐧 들어가기 앞서

개인 과제를 어떻게 구현은 했는데,

완전히 다 구현하지는 못했다.

아쉬운 부분이 너무 많다.


🐧 오늘 배운 것

  1. 코루틴 직접 적용하기

🐧 기억할 것 & 진행

인벤토리에서 아이템을 적용하면, 스탯창에서 아이템 스탯까지 반영해야한다.

그러나 스탯창은 비활성화 상태일 때, 스탯값을 받지 못하는 상태다.

이때 값을 전달해주기 위해 코루틴을 사용했다!


🐧 게임에 구현한다면?

private void OnEnable()
    {
        StartCoroutine(UpdateStatusUI());
    }

    private void OnDisable()
    {
        StopAllCoroutines();
    }

    private IEnumerator UpdateStatusUI()
    {
        while (true)
        {
            yield return null;

            PlayerStatHandler playerStatHandler = FindObjectOfType<PlayerStatHandler>();

            if (playerStatHandler != null)
            {
                playerData = playerStatHandler.playerData;

                if (playerData != null)
                {
                    SetStatusValues(playerData);
                }
            }
        }
    }
  • OnEnable():
    이 메서드는 StatusUI 스크립트가 활성화될 때 호출된다.
    스크립트가 활성화되면 코루틴인 UpdateStatusUI()가 시작된다.

  • OnDisable():
    이 메서드는 StatusUI 스크립트가 비활성화될 때 호출된다.
    스크립트가 비활성화되면 모든 코루틴이 중지된다.

  • UpdateStatusUI():
    주기적으로 PlayerStatHandler를 검색하여 플레이어 데이터를 가져온다.
    데이터를 가져온 후에는 SetStatusValues() 메서드를 호출하여 UI에 값을 업데이트한다.
    yield return null을 사용하여 한 프레임을 기다린 후 다음 루프를 실행한다.
    무한 루프이지만 StopAllCoroutines()를 호출하여 OnDisable()에서 중지된다.


🐧 내일 할 일

깃허브 README.md 작성하기

마지막 점검하기

0개의 댓글