79. Unity 최종 프로젝트 7주차(2)

이규성·2024년 2월 20일
0

TIL

목록 보기
86/106

02/20

📌팀 프로젝트 진행

목표

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

금일 구현 설계

Armor system refactoring 2트

금일 구현한 사항

Armor system refactoring 2트 중
ArmorSystem.cs

기존에 ToolSystem.cs의 변수에 의존하던 것을 ArmorSystem.cs이 관리하도록 수정함


ArmorSystem.cs으로 기능을 옮겨오면서 인벤토리 업데이트를 위해 PlayerInventorySystem.cs에서 업데이트 함수를 구독함

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
// Lee gyuseong 24.02.15

public class UIArmorSlotContainer : MonoBehaviour
{
    private List<UIArmorSlot> _armorSlots = new List<UIArmorSlot>();

    public void CreatArmorSlots<T>(GameObject slotPrefab, int count) where T : UIArmorSlot
    {
        for (int i = 0; i < count; i++)
        {
            var armorSlotPrefab = Instantiate(slotPrefab, this.transform);
            var armorSlotUI = armorSlotPrefab.GetComponent<T>();
            SetParts(armorSlotUI, i);
            _armorSlots.Add(armorSlotUI);
        }
    }

    public void Init<T>(QuickSlot[] quickSlot) where T : UIArmorSlot
    {
        foreach (var armor in quickSlot)
        {
            for (int i = 0; i < _armorSlots.Count; i++)
            {
                _armorSlots[i].EquipArmor(armor);
            }
        }
    }

    private void SetParts(UIArmorSlot armorSlotUI, int index)
    {
        armorSlotUI.part = (ItemParts)index;
    }
}


기존에 UIArmorSlotContainer가 프리팹을 생성하던 기능을 코드의 통일성을 위해 UIInventory.cs로 옮겨가고 UIArmorSlotContainer는 제너릭 함수를 가지고 있게 수정함

금일 이슈

금일 커밋한 사항

[➕Update] Armor system refactoring 2

🤸🏻‍♀️Feedback

올바른 바인딩과 이벤트 구독의 중요성을 깨달은 하루였다. 기재하진 않았지만 억지로 기능 구현을 위해 넣었던 코드들을 대거 삭제 및 수정한 부분이 많았다.

0개의 댓글