82. Unity 최종 프로젝트 8주차

이규성·2024년 2월 27일
0

TIL

목록 보기
90/106

02/27

📌팀 프로젝트 진행

목표

Android build 최적화
Ios 빌드 알아보기

금일 구현 설계

금일 구현한 사항

장작 시스템 4트인가 5트인가 혼미한 상태

금일 이슈



PopupUI 하나로 전달 받는 화로에 컴포넌트로 붙은 Ignition 클래스에 따라서 처리를 하다 보니 만약 UI를 켜놓은 상태라면 꺼져 있는 화로에도 영향을 끼치게 된다.

private void OnEnable()
{
    //활성화 됐을 떄 동작하게
    //이건 데이터를 가져와서 그리기만 한다
    Initialize();

    _firewoodItems = Get<GameObject>((int)GameObjects.FirewoodItems).transform;
    _content = Get<GameObject>((int)GameObjects.Content).transform;
    _firewoodHelper = Get<UIStoreFirewoodHelper>((int)Helper.UIStoreFirewoodHelper);
    _firewoodHelper.ignition = ignition;

    ignition.OnUpdateFirewoodUI += OnUpdateFirePowerGaugeSlider;
    ignition.OnUpdateFirewoodUI += OnUpdateFirewoodItemQuantity;
    ignition.OnUpdateQuantity += OnUpdateQuantity;
    ignition.OnUpdateSlider += OnUpdatedTimeTakenToCookSlider;
    //구독해지

    CreatCookingSlot();
    CreatFirewoodSlot();
    ShowCookingSlots();
    OnUpdateFirewoodItemQuantity();
    OnUpdateFirePowerGaugeSlider();
    OnUpdatedTimeTakenToCookSlider();
    UpdateQuantityOnEnable();
}

private void OnDisable()
{
    ignition.OnUpdateFirewoodUI -= OnUpdateFirePowerGaugeSlider;
    ignition.OnUpdateFirewoodUI -= OnUpdateFirewoodItemQuantity;
    ignition.OnUpdateQuantity -= OnUpdateQuantity;
    ignition.OnUpdateSlider -= OnUpdatedTimeTakenToCookSlider;

    for (int i = 0; i < cookingSlots.Count; i++)
    {
        cookingSlots[i].SetDisableIcon();
        cookingSlots[i].gameObject.SetActive(false);
    }
    ignition = null;
}

이슈를 공유하였더니 명쾌한 피드백을 들을 수 있었다. 그렇다 UI class는 데이터 처리를 하는 것이 아닌 넘겨 받은 데이터를 화면에 그리기만 하면 될 뿐이다. Disable이 되면 이벤트 구독을 해지하고 할당된 ignition도 해지한다. 그리고 다시 Enable 되었을 때 처리된 데이터들을 업데이트 시켜준다.

금일 커밋한 사항

[➕Update] Updated firewood system 4

🤸🏻‍♀️Feedback

0개의 댓글