포션 칸 만들기
2025. 1. 2. 21:57ㆍ카테고리 없음
포션을 가지고 있을때 플레이어가 사용하기 쉽게 만들어 주기 위해서 포션칸을 UI로 만들어 주기로 했다.
첫번째로 포션슬롯이 생길 위치를 오브젝트로 지정을 해준 다음에 보유한 아이템중에 포션이 있으면 해당 아이템의 슬롯을 생성하게 만들었다.
public class Potion : UIBase
{
[SerializeField] private Transform hpPotion;
[SerializeField] private Transform mpPotion;
[SerializeField] private GameObject objCell;
public void Initialized()
{
if (ItemManager.Instance.FindItemItemId(1601) == null)
{
return;
}
if (ItemManager.Instance.FindItemItemId(1601).itemId == 1601)
{
GameObject obj = Instantiate(objCell, hpPotion);
obj.GetComponent<ItemCell>().Initialize(ItemManager.Instance.FindItemItemId(1601), 5);
}
if (ItemManager.Instance.FindItemItemId(1601).itemId == 1602)
{
GameObject obj = Instantiate(objCell, mpPotion);
obj.GetComponent<ItemCell>().Initialize(ItemManager.Instance.FindItemItemId(1601), 5);
}
}
}
문제 및 해결
이와같이 구현을 하던 도중 문제를 만났는데 여태까지 잘되던 UIManager가 문제가 생겼던 것이다.
여태까지 아무런 문제없이 잘되던 UIManager에서 갑자기 NULL이 떠버린 것이다. 그래서 이유를 찾아보니 해당 데이터를 가져올떄 UIManager를 초기화 시켜주는것보다 아이템 데이터를 먼저실행을 했기 떄문에 생겼던 문제였다. 그래서 위치를 ItemManager가 뒤로가게 수정후 실행하니 문제없이 잘 작동했다.
private new void Awake()
{
base.Awake();
DataManager.Instance.Initialize();
ItemManager.Instance.Initialize(DatabaseManager.Instance.LoadDataList<ItemInstance>());
QuestManager.Instance.Initialize(DatabaseManager.Instance.LoadDataList<QuestInstance>());
UIManager.Instance.Initailize();
Initialize();
}
결과
포션을 가지고 있으면 해당 위치에 포션칸이 잘 생기는것을 볼 수 있다.