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

Unity中GameObject预制体运行时自行消失问题求助(无Destroy代码)

Unity Player脚本预制体引用丢失问题修复

问题原因

你在Start()方法里写了一行错误代码,直接覆盖了Inspector里的预制体赋值:

beanPrefab = GetComponent<GameObject>();

GameObject根本不是Unity的组件类型,GetComponent<T>()只能获取挂载在当前游戏对象上的组件(比如Rigidbody、Collider这类),所以这行代码会返回null。每次游戏启动时,Start()方法执行,就会把你拖拽好的beanPrefab引用冲成null,导致运行时预制体“消失”,而且每次运行都得重新赋值。

修复方法

  1. 删掉Start()里的beanPrefab = GetComponent<GameObject>();这行代码
  2. 保存脚本,回到Unity编辑器,重新给beanPrefab拖拽赋值
  3. 运行游戏,此时预制体引用不会再被重置

额外提示

  • rb = GetComponent<Rigidbody>();是正确的,因为Rigidbody是挂在Player上的组件,用GetComponent能正确获取
  • beanPrefab是外部预制体,不需要用GetComponent获取,只需要在Inspector里拖拽赋值就行,别在代码里乱给它赋值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 00:10:17