개인 과제를 어떻게 구현은 했는데,
완전히 다 구현하지는 못했다.
아쉬운 부분이 너무 많다.
인벤토리에서 아이템을 적용하면, 스탯창에서 아이템 스탯까지 반영해야한다.
그러나 스탯창은 비활성화 상태일 때, 스탯값을 받지 못하는 상태다.
이때 값을 전달해주기 위해 코루틴을 사용했다!
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 작성하기
마지막 점검하기