UI_Inven은 GridPanel과 UI_Inven_Item으로 이루어졌다.
UI_Inven_Item은 이미지 아이콘과 텍스트로 이루어졌다.
public class PlayerController : MonoBehaviour
{
void Start()
{
// TEMP
Managers.UI.ShowSceneUI<UI_Inven>();
}
...
}
UI_Inven 팝업을 띄운다.
해당 과정에서 오브젝트가 생성되고 스크립트가 삽입된다.
public class UI_Inven : UI_Scene
{
enum GameObjects
{
GridPanel,
}
void Start()
{
Init();
}
public override void Init()
{
Bind<GameObject>(typeof(GameObjects));
GameObject gridPanel = Get<GameObject>((int)GameObjects.GridPanel);
foreach (Transform child in gridPanel.transform)
{
Managers.Resource.Destroy(child.gameObject);
}
for (int i=0; i<8; i++)
{
GameObject item = Managers.Resource.Instantiate("UI/Scene/UI_Inven_Item");
item.transform.SetParent(gridPanel.transform);
UI_Inven_Item invenItem = Util.GetOrAddCompoent<UI_Inven_Item>(item);
invenItem.SetInfo($"총 {i}");
}
}
}
UI_Inven을 바인드한다.
처음에는 인벤토리를 비우는 작업을 실시한다.
이후 예시로, 8개의 Inven_Item을 생성한다.
SetInfo는 생성된 아이템의 텍스트 변경을 위한 함수이다.
public class UI_Inven_Item : UI_Base
{
enum GameObjects
{
ItemIcon,
ItemNameText,
}
string _name;
void Start()
{
Init();
}
public override void Init()
{
Bind<GameObject>(typeof(GameObjects));
Get<GameObject>((int)GameObjects.ItemNameText).GetComponent<Text>().text = _name;
Get<GameObject>((int)GameObjects.ItemIcon).AddUIEvent((PointerEventData) => Debug.Log(_name));
}
public void SetInfo(string name)
{
_name = name;
}
}
여기서도 처음에 바인드를 실시한다.
이후 텍스트 게임오브젝트의 텍스트 컴포넌트에 접근해 이름을 바꾸는 과정을 적용하였다.
총 8개의 아이템이 생성되었으며, 각각의 텍스트가 적용된 것을 확인하였다.