오늘 시간은 많이 썼는데 한 것은 별로 없네.
그만큼 집중했다고 봐도 좋을까.
IInteractable을 선언했다.public interface IInteractable // 超超超超超超간단
{
void Interact(Player player);
}
땅에 떨어진 아이템은 어떻게 할까 고민 많이했다.
프리팹을 따로 다 만들어야하나..하는 생각도 했다.
일단 리소스 많이 잡아먹고 뭔가 많이 늘어나는 느낌이니 그것은 오답이라고 생각.
전날에 만든 ItemDataSO(Scriptable Object)가 기억났다.
WorldItem이라는 빈 도화지 같은 컴포넌트가 ItemDataSO를 받아서 내가 원하는 아이템 모습으로 월드에 생성되도록 한다.
WorldItem은 빈 종이 같은 느낌이고, ItemDataSO는 소재(내용)이다.
만화를 그리면 만화책, 이야기를 쓰면 소설책이 되듯이.
아이템마다 프리팹이나 스크립트가 필요하지 않아져서 좋다고 느꼈고, 나중에도 이 방향을 이어나갈 것 같다.
public static WorldItem WorldItemCreate(ItemDataSO itemData)
{
GameObject newObj = new GameObject("WorldItem_" + itemData.name);
newObj.AddComponent<SpriteRenderer>();
WorldItem worldItem = newObj.AddComponent<WorldItem>();
worldItem.Init(itemData);
return worldItem;
}