You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中如何为Button的OnClick绑定带数组参数的ShuffleArray方法?

Unity Button绑定无参洗牌方法的解决方案

问题根源

你的代码里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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 02:05:12