如何添加由脚本创建的每个按钮点击侦听器事件?

丹尼尔·利普
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class GenerateUIButtons : MonoBehaviour
{
    public GameObject buttonPrefab;
    public GameObject parent;
    public int numberOfButtons;
    public float spaceBetweenButtons;

    private Button[] buttons;

    // Start is called before the first frame update
    void Start()
    {
        buttons = new Button[7];

        for (int i = 0; i < Rotate.names.Length; i++)
        {
            GameObject newButton = Instantiate(buttonPrefab);
            newButton.name = Rotate.names[i];
            newButton.transform.SetParent(parent.transform, false);
            buttons[i] = newButton.GetComponent<Button>();
            buttons[i].onClick.AddListener(() => ButtonClicked(i));
        }
    }

    void ButtonClicked(int buttonNo)
    {
        Debug.Log("Clicked On " + buttons[buttonNo]);
    }

    // Update is called once per frame
    void Update()
    {

    }
}

我在线上遇到异常:

Debug.Log("Clicked On " + buttons[buttonNo]);

IndexOutOfRangeException:索引超出数组范围

我想要做的是当我单击其中一个按钮时,它会在 ButtonClicked 中执行相同的操作。

新乡

这是一个闭包问题,不要使用循环值来创建闭包,先将值赋给另一个局部变量。

for (int i = 0; i < Rotate.names.Length; i++)
{
    ...
    int j = i;
    buttons[i].onClick.AddListener(() => ButtonClicked(j));
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何为表行结果的每个按钮添加事件侦听器?

来自分类Dev

如何在DrawingManagerControl的按钮上添加事件侦听器?

来自分类Dev

如何将侦听器事件添加到由DefaultListModel对象添加的JList元素?

来自分类Dev

如何将侦听器事件添加到由DefaultListModel对象添加的JList元素?

来自分类Dev

jQuery-将事件侦听器添加到动态创建的按钮

来自分类Dev

将事件侦听器添加到动态创建的按钮

来自分类Dev

使用添加事件侦听器创建滚动事件 - Javascript

来自分类Dev

如何将事件侦听器添加到数组中的每个元素?

来自分类Dev

如何为每个元素添加唯一的事件侦听器

来自分类Dev

JavaScript事件侦听器未添加到按钮

来自分类Dev

将事件侦听器添加到由事件侦听器添加的表单元素

来自分类Dev

如何为页面脚本中的自定义消息创建事件侦听器

来自分类Dev

如何为页面脚本中的自定义消息创建事件侦听器

来自分类Dev

如何将事件侦听器添加到JavaScript中的许多按钮?

来自分类Dev

如何在jquery的sweetalert对话框中为html按钮添加事件侦听器

来自分类Dev

如何将事件侦听器添加到<input type = number>的默认箭头按钮

来自分类Dev

如何将事件侦听器添加到仅按钮元素

来自分类Dev

如何将事件侦听器添加到JavaScript中的许多按钮?

来自分类Dev

如何将事件侦听器添加到动态创建的HTML列表元素?

来自分类Dev

如何向原型内动态创建的元素添加事件侦听器?

来自分类Dev

如何向使用 ES6 模板文字创建的元素添加函数/事件侦听器?

来自分类Dev

如何在的IntelliJ插件添加事件侦听器?

来自分类Dev

如何为活动添加事件侦听器AnyChart 8

来自分类Dev

如何使用jquery .each()添加单个事件侦听器?

来自分类Dev

如何让 DOM/事件侦听器知道新添加的节点?

来自分类Dev

如何删除 iFrame 添加的 beforeunload 事件侦听器?

来自分类Dev

如何删除从各个要素动态创建的事件侦听器?

来自分类Dev

如何创建检查div元素样式的事件侦听器?

来自分类Dev

如何为图标创建事件侦听器?

Related 相关文章

  1. 1

    如何为表行结果的每个按钮添加事件侦听器?

  2. 2

    如何在DrawingManagerControl的按钮上添加事件侦听器?

  3. 3

    如何将侦听器事件添加到由DefaultListModel对象添加的JList元素?

  4. 4

    如何将侦听器事件添加到由DefaultListModel对象添加的JList元素?

  5. 5

    jQuery-将事件侦听器添加到动态创建的按钮

  6. 6

    将事件侦听器添加到动态创建的按钮

  7. 7

    使用添加事件侦听器创建滚动事件 - Javascript

  8. 8

    如何将事件侦听器添加到数组中的每个元素?

  9. 9

    如何为每个元素添加唯一的事件侦听器

  10. 10

    JavaScript事件侦听器未添加到按钮

  11. 11

    将事件侦听器添加到由事件侦听器添加的表单元素

  12. 12

    如何为页面脚本中的自定义消息创建事件侦听器

  13. 13

    如何为页面脚本中的自定义消息创建事件侦听器

  14. 14

    如何将事件侦听器添加到JavaScript中的许多按钮?

  15. 15

    如何在jquery的sweetalert对话框中为html按钮添加事件侦听器

  16. 16

    如何将事件侦听器添加到<input type = number>的默认箭头按钮

  17. 17

    如何将事件侦听器添加到仅按钮元素

  18. 18

    如何将事件侦听器添加到JavaScript中的许多按钮?

  19. 19

    如何将事件侦听器添加到动态创建的HTML列表元素?

  20. 20

    如何向原型内动态创建的元素添加事件侦听器?

  21. 21

    如何向使用 ES6 模板文字创建的元素添加函数/事件侦听器?

  22. 22

    如何在的IntelliJ插件添加事件侦听器?

  23. 23

    如何为活动添加事件侦听器AnyChart 8

  24. 24

    如何使用jquery .each()添加单个事件侦听器?

  25. 25

    如何让 DOM/事件侦听器知道新添加的节点?

  26. 26

    如何删除 iFrame 添加的 beforeunload 事件侦听器?

  27. 27

    如何删除从各个要素动态创建的事件侦听器?

  28. 28

    如何创建检查div元素样式的事件侦听器?

  29. 29

    如何为图标创建事件侦听器?

热门标签

归档