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

Unity开发中PurchaseVents方法读取totalCost12、vCountAmount值为0问题咨询

Game_Manager 变量修改后调用PurchaseVents读取为0的故障原因

以下是该问题的几种常见触发场景:

  • 实例不匹配:你调用AddCount、AddPrice方法的Game_Manager对象实例,和调用PurchaseVents的实例并非同一个。继承MonoBehaviour的类不允许直接通过new关键字创建实例,如果你手动new了实例、或者场景中挂载了多个Game_Manager组件,就会出现修改的是A实例的变量,读取的是未经过赋值的B实例的字段,拿到默认值0。你可以在两个修改方法和PurchaseVents中同时打印gameObject.GetInstanceID()确认是否为同一个实例。
  • 序列化值覆盖:如果totalCost12、vCountAmount是public修饰或者标记了[SerializeField]特性,Inspector面板中对应组件的这两个字段初始值设为0,且你调用修改方法的时机早于组件的序列化赋值流程,运行时修改的值会被Inspector的默认值覆盖。你可以在Start方法中打印这两个字段的初始值确认是否被覆盖。
  • 执行顺序错误:PurchaseVents的调用时机早于AddCount、AddPrice的执行时机,方法执行时变量还没有被修改,自然读取到初始值0。可以在三个方法中都加日志打印调用时间戳确认执行顺序。
  • 局部变量遮蔽:检查AddCount、AddPrice方法内部是否声明了和全局变量同名的局部变量,比如方法内写了int totalCost12 = 100而非直接给全局变量赋值,这种情况你在方法中打印的是局部变量的值,实际全局变量并未被修改,后续调用PurchaseVents读取的就是未修改的初始值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 19:30:06