본문 바로가기
  • 피곤한 일상에 초록물약 한잔
개발일지(Unity)

[Unity] 스크립트를 이용해 버튼에 Onclick 적용하기

by 0r4c13 2021. 3. 10.
반응형
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ItemBoxManager : MonoBehaviour
{
    public MainMoneySystem mainSystem;
    public GameObject itemBox;
    public ItemsMaster master;

    void Start()
    {
        master = GameObject.FindWithTag("ItemsMaster").GetComponent<ItemsMaster>();
        ItemSetting();
    }

    public void ItemSetting()
    {
        for(int i = 0; i < mainSystem.Items.Count; i++)
        {
            itemBox = Instantiate(Resources.Load("ItemBox") as GameObject);
            itemBox.GetComponent<ItemBox>().name = mainSystem.Items[i].name;
            itemBox.GetComponent<ItemBox>().comment = mainSystem.Items[i].comment;
            itemBox.GetComponent<ItemBox>().price = mainSystem.Items[i].price;
            itemBox.GetComponent<ItemBox>().img = mainSystem.Items[i].img;
            int temp = i;
            itemBox.transform.GetChild(0).GetComponent<Button>().onClick.AddListener(delegate { master.SetId(mainSystem.Items[temp].id); });
            itemBox.transform.GetChild(0).GetComponent<Button>().onClick.AddListener(delegate { master.BuyingItem(); });
            itemBox.GetComponent<ItemBox>().UpdateItem();
            itemBox.transform.SetParent(transform);

        }
    }
}

 

프리팹을 이용하여 버튼을 불러오고, 거기에 해당하는 온클릭 이벤트를 직접 부여하는 방법을 찾고 있었다.

버튼의 컴포넌트에 접속하여 onClick.AddListener()를 이용하면 되고, 안쪽에서 delegate를 사용하여 적용할 이벤트를 작성해준다.

처음에 반복문을 이용하여 i값을 사용하려고 했을때는 자꾸 없다는 에러가 떴었는데, 따로 변수를 선언하여 i값을 넣어준 뒤에 불러와 해결하였음.

반응형

댓글