UI Button에 OnClick 코드로 관리하는 방법(AddListener)
2024. 12. 6. 16:21ㆍ카테고리 없음
기존에 UI Button에 있는 OnClick에 함수를 할당할때에는 드래그엔드롭을 통해 함수를 할당해 줬는데 이번에 사용할 방법은 코드로 함수를 할당해 주는 방법으로 해볼것이다.
필드 정의
[SerializeField] private Button equipment;
[SerializeField] private Button consumption;
[SerializeField] private Button misc;
- 드래그 앤 드롭 방식으로 Unity 에디터에서 해당 버튼들을 연결할 수 있다.
함수 정의(AddListener)
private void ButtonInitialize()
{
equipment.onClick.AddListener(() => Refresh(ItemType.Equipment));
consumption.onClick.AddListener(() => Refresh(ItemType.Consumption));
misc.onClick.AddListener(() => Refresh(ItemType.Misc));
}
AddListener를 통해서 각 버튼 클릭에 대해 동적으로 함수를 할당하는 방법이다. 이를 이용하면 인자를 넘겨주거나, 별도의 메서드를 호출할 수도 있다.
람다식을 통해서 동작할 함수를 작성하면 된다.
public void Refresh(ItemType type)
{
DeleteCell();
for (int i = 0; i < _items.Count; i++)
{
if (DataManager.Instance.Item.GetItemData(_items[i].itemId).itemType == type)
{
GameObject obj = Instantiate(objCell, trsParent);
obj.GetComponent<ItemCell>().Initialize(_items[i]);
}
}
}
- 각 버튼 클릭에 따라 동적으로 아이템을 갱신하는 역할을 한다.