Unity中如何为Button的OnClick绑定带数组参数的ShuffleArray方法?
问题根源
你的代码里Start方法中声明了局部变量int[] array,覆盖了类的私有成员array,导致类成员从未被初始化,所以移除参数后无法访问有效数组值。
修复步骤
1. 修正Start方法,初始化类成员数组
把Start里的局部变量声明去掉,直接给类的array成员赋值:
void Start() { // 去掉int[],直接赋值给类的私有成员array array = Enumerable.Range(1, ArraySize).ToArray(); ShuffleArray(); // 调用无参版本的洗牌方法 }
2. 修改ShuffleArray为无参方法
直接使用类的array成员,无需传入参数:
public void ShuffleArray() { if (array == null) return; // 空判断避免空引用报错 Random r = new Random(); // 重新赋值给类成员,确保数组状态被更新 array = array.OrderBy(x => r.Next()).ToArray(); VisualizeArray(array); }
3. 绑定Button事件
在Unity编辑器中:
- 选中目标Button对象
- 在Inspector面板找到
OnClick()事件列表 - 点击
+号,拖入挂载此脚本的GameObject - 在下拉菜单中找到你的脚本类,选择
ShuffleArray()方法完成绑定
替代方案:保留原带参方法,写包装方法
如果不想修改原ShuffleArray方法,可新增一个无参包装方法(同样要先修复Start的局部变量问题):
// 此方法可直接绑定到Button的OnClick public void OnShuffleButtonClicked() { if (array != null) { ShuffleArray(array); } }
内容的提问来源于stack exchange,提问作者auroradynia
相关产品推荐
相关产品推荐

