Unity中GameObject预制体运行时自行消失问题求助(无Destroy代码)
Unity Player脚本预制体引用丢失问题修复
问题原因
你在Start()方法里写了一行错误代码,直接覆盖了Inspector里的预制体赋值:
beanPrefab = GetComponent<GameObject>();
GameObject根本不是Unity的组件类型,GetComponent<T>()只能获取挂载在当前游戏对象上的组件(比如Rigidbody、Collider这类),所以这行代码会返回null。每次游戏启动时,Start()方法执行,就会把你拖拽好的beanPrefab引用冲成null,导致运行时预制体“消失”,而且每次运行都得重新赋值。
修复方法
- 删掉
Start()里的beanPrefab = GetComponent<GameObject>();这行代码 - 保存脚本,回到Unity编辑器,重新给
beanPrefab拖拽赋值 - 运行游戏,此时预制体引用不会再被重置
额外提示
rb = GetComponent<Rigidbody>();是正确的,因为Rigidbody是挂在Player上的组件,用GetComponent能正确获取beanPrefab是外部预制体,不需要用GetComponent获取,只需要在Inspector里拖拽赋值就行,别在代码里乱给它赋值
内容的提问来源于stack exchange,提问作者icklesauce
相关产品推荐
相关产品推荐

