Unity中UGUI的Button动态绑定引用问题

devtools/2024/12/28 21:01:50/

Unity中UGUI的Button动态绑定引用问题

  • 问题代码
  • 修改代码如下
  • 总结

问题代码

Button动态绑定几个连续的按钮事件时使用for循环的i做按钮的id发现按钮点击对应不上。如下代码

for (int i = 0; i < 10; i++)
{btn[i].onClick.AddListener(() =>{Click(i);});
}/// <summary>
/// 点击事件绑定id
/// </summary>
/// <param name="id"></param>
private void Click(int id)
{Debug.LogError(id);
}

上述代码的打印发现每个按钮的点击触发的id都是10,也就是for循环i的最大值。此时按钮的id引用都是i,但是i其实是已经发生了变化从0-10的变化,这里只需要将i开辟一个新的引用即可。

修改代码如下

for (int i = 0; i < 10; i++)
{btn[i].onClick.AddListener(() =>{int id = i;Click(id);});
}/// <summary>
/// 点击事件绑定id
/// </summary>
/// <param name="id"></param>
private void Click(int id)
{Debug.LogError(id);
}

代码加入上述的**int id = i;**这样就可以动态绑定不同引用的按钮。

总结

这个其实是一个值类型和引用类型的问题,感谢大家的支持!


http://www.ppmy.cn/devtools/146204.html

相关文章

数字后端培训项目Floorplan常见问题系列专题续集1

今天继续给大家分享下数字IC后端设计实现floorplan阶段常见问题系列专题。这些问题都是来自于咱们社区IC后端训练营学员提问的问题库。目前这部分问题库已经积累了4年了&#xff0c;后面会陆续分享这方面的问题。 希望对大家的数字后端学习和工作有所帮助。 数字后端项目Floor…

KOI技术-事件驱动编程(前端)

1 “你日渐平庸&#xff0c;甘于平庸&#xff0c;将继续平庸。”——《以自己喜欢的方式过一生》 2. “总是有人要赢的&#xff0c;那为什么不能是我呢?”——科比布莱恩特 3. “你那么憎恨那些人&#xff0c;和他们斗了那么久&#xff0c;最终却要变得和他们一样&#xff0c;…

策略模式

一、定义 策略模式&#xff1a;该模式定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换&#xff0c;且算 法的变化不会影响使用算法的客户。 二、实际应用 当前有一个抽象类 鸭子 &#xff08;Duck &#xff09;&#xff0c;其中有叫声&#…

git revert

git revert 是 Git 中的一个命令&#xff0c;用于创建一个新的提交&#xff0c;该提交会撤销&#xff08;或“反转”&#xff09;之前某个特定提交所做的更改。这个命令非常有用&#xff0c;因为它允许你在不改变项目历史的情况下&#xff0c;撤销某个提交的更改效果。 git re…

【乐企文件生成工程】根据特定要素动态选择需要生成的发票板式文件实现

乐企版式文件生成工程,涉及到多个票种,不乏特殊票种的生成,如果每个特殊票种都单独写逻辑,那整个代码写起来体量就不得了,如何实现代码逻辑的同时也更优雅的实现代码扩展性呢,您接着往下看。 使用设计模式 工厂模式 1、定义接口InvoiceFileService public interface Inv…

2025.01.15python商业数据分析

# # 一、 导入项目 import pandas as pd# # # 文件路径为python文件位置下的相对路径 dwx pd.read_excel("电商案例数据及数据说明/驱虫剂市场/电蚊香套装市场近三年交易额.xlsx", ) fmfz pd.read_excel("电商案例数据及数据说明/驱虫剂市场/防霉防蛀片市场近…

StarRocks 排查单副本表

文章目录 StarRocks 排查单副本表 方式1 查询元数据&#xff0c;检查分区级的副本数方式2 SHOW PARTITIONS命令查看 ReplicationNum修改副本数命令 StarRocks 排查单副本表 方式1 查询元数据&#xff0c;检查分区级的副本数 # 方式一 查询元数据&#xff0c;检查分区级的副…

详解VHDL如何编写Testbench

1.概述 仿真测试平台文件(Testbench)是可以用来验证所设计的硬件模型正确性的 VHDL模型&#xff0c;它为所测试的元件提供了激励信号&#xff0c;可以以波形的方式显示仿真结果或把测试结果存储到文件中。这里所说的激励信号可以直接集成在测试平台文件中&#xff0c;也可以从…