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

Unity点击事件赋值后public变量saveindex未更新问题

问题根因

这个问题90%以上的诱因是点击事件绑定的脚本实例不统一,剩余小概率是值被其他逻辑重置:

  • 最常见场景:绑定事件时没有选择Hierarchy面板中的场景内游戏对象,而是直接拖了Project面板中的预制体资产。这种情况下点击触发时Unity会临时生成一个隐藏的预制体副本调用方法,你在Oneclick里修改的是这个临时副本的saveindex值,方法执行完临时副本就会被销毁,你自己在场景中挂载的脚本实例从来没被修改过,saveindex一直保持int类型默认值0,Inspector面板自然不会有数值变化,Twoclick读取的也是场景实例的默认值0。
  • 次常见场景:两个按钮的点击事件分别绑定了不同游戏对象上挂载的Custom脚本。Oneclick修改的是A对象上的脚本值,Twoclick读取的是B对象上从未赋值的脚本值,结果自然是0。
  • 小概率场景:项目里存在其他逻辑(比如其他脚本的生命周期函数、别的按钮事件)在两次点击的间隙把saveindex重置为0了。
排查&修复步骤
  1. 先确认实例一致性:在两个方法里都加一行打印实例ID的代码
    public void Oneclick(int buttonindex)
    {
        saveindex = buttonindex;
        Debug.Log($"Oneclick调用实例ID:{GetInstanceID()},saveindex值:{saveindex}", gameObject);
    }
    
    public void Twoclick(int buttonindex)
    {
        Debug.Log($"Twoclick调用实例ID:{GetInstanceID()},saveindex值:{saveindex}", gameObject);
    }
    
    运行后依次点击两个按钮,如果控制台输出的两个实例ID不一致,就可以确定是绑定对象错了。
  2. 重新绑定事件:把两个按钮OnClick列表里的现有绑定项全部删除,重新从Hierarchy面板拖入挂有Custom脚本的场景内目标对象,分别选择对应的Oneclick、Twoclick方法,配置好传入参数。
  3. 如果实例ID一致但值还是0,全局搜索项目中所有对saveindex赋值的代码,排查是否存在逻辑误重置值的问题。

内容的提问来源于stack exchange,提问作者fatdrogen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 07:09:27