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

Unity继承MonoBehaviour的子类变量未被正确赋值问题求助

问题根因

你的代码继承逻辑没有错误,问题出在ProjectileWeapon组件的引用来源:
你给WeaponHandler.WeaponBehaviour赋值的是未实例化的Prefab资源上的组件,而非场景中实际生成的武器GameObject上的组件。

调用BeginCycle/EndCycle时,执行的是Prefab资源上组件的方法,所以控制台可以正常打印日志,你修改的也只是Prefab资源上的firing变量;而场景中实际运行的武器实例对象的firing变量从未被修改,自然无法触发Update里的对应逻辑,OnGUI显示的也是实例对象的默认值。

修复方案

调整武器组件的获取逻辑即可:

  • 武器首次生成时,调用Instantiate实例化Prefab得到场景中的武器GameObject后,再从该实例上获取ProjectileWeapon组件,赋值给WeaponHandler.WeaponBehaviour
  • 如果是玩家拾取已存在的武器,直接从场景中对应的武器实例对象上获取组件赋值即可,不要直接引用Prefab资源上的组件
验证方法

运行游戏后选中玩家对象,查看Inspector面板的WeaponBehaviour字段:

  • 若字段指向Project窗口中的Prefab资源,说明赋值错误
  • 若字段指向Hierarchy面板中的场景对象,说明赋值正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:54:04