当前位置: 首页 > article >正文

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

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.kler.cn/a/455788.html

相关文章:

  • 我的秋招总结
  • 告别 Shuffle!深入探索 Spark 的 SPJ 技术
  • 游戏引擎学习第63天
  • 使用C#创建人名或其他物体随机分组
  • Maven 快照(SNAPSHOT)
  • 个人电子书库管理器Biblioteca
  • leetcode热题100(54. 螺旋矩阵)c++
  • 基于Debian的Linux发行版的包管理工具
  • 青训营-豆包MarsCode技术训练营试题解析四十八
  • 用于汽车碰撞仿真的 Ansys LS-DYNA
  • react里使用Day.js显示时间
  • 深度学习每周学习总结R1(RNN-心脏病预测)
  • 绝美的数据处理图-三坐标轴-散点图-堆叠图-数据可视化图
  • python应用场景随笔
  • sqoop的参数有哪些?
  • 区块链开发入门合集(1)共25节
  • Pytorch | 利用GNP针对CIFAR10上的ResNet分类器进行对抗攻击
  • w04_nlp大模型训练·中文分词
  • 再生核希尔伯特空间(RKHS)上的分位回归
  • 【MFC】多工具栏如何保存状态(续)