@kititnik1

Как задать UnityEvent в btn.AddListner()?

У меня есть код:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;

public class Shop : MonoBehaviour
{
    public Items[] items;
    List<object> itemsList;
    [HideInInspector]public Items currentItem;
    public Main main;
    public GameObject item;

    private void Start()
    {
        itemsList = new List<object>(items);
        for (int i = 0; i < items.Length; i++)
        {
            currentItem = itemsList[i] as Items;
            GameObject p = Instantiate(item, shopPan.transform);
            p.transform.GetChild(0).GetChild(0).GetComponent<Text>().text = currentItem.name;
            p.transform.GetChild(0).GetChild(1).GetComponent<Text>().text = currentItem.cost.ToString();
            p.transform.GetChild(1).GetComponent<Image>().sprite = currentItem.Image;
            p.transform.GetChild(0).GetComponent<Button>().onClick.AddListener(currentItem.invokeMethod.Invoke);
        }
    }
}

[System.Serializable]
public class Items
{
    public int cost;
    public string name;
    public Sprite Image;
    public UnityEvent invokeMethod;
}

И вот эта строчка просто не работает:
p.transform.GetChild(0).GetComponent<Button>().onClick.AddListener(currentItem.invokeMethod.Invoke);

И я не понимаю почему. Нашёл вот эту статью: Ссылка
Но ничего из предложенного не помогло. Что делать?
  • Вопрос задан
  • 200 просмотров
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Сделайте аргументом AddListener нормальный метод, а не вот то, что вы там написали.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы