MissingReferenceException:“GameObject”类型的对象已经存在 被摧毁但你还在试图访问它。你的脚本应该 要么检查它是否为null,否则你不应该销毁该对象。 UnityEngine.Object.Internal_InstantiateSingle(UnityEngine.Object 数据,Vector3 pos,Quaternion rot)(at C:/BuildAgent/work/d9c061b1c154f5ae/Runtime/ExportGenerated/Editor/UnityEngineObject.cs:44) UnityEngine.Object.Instantiate(UnityEngine.Object原创,Vector3 位置,四元数旋转)(at C:/BuildAgent/work/d9c061b1c154f5ae/Runtime/ExportGenerated/Editor/UnityEngineObject.cs:53) Gun.Update()(在J:/W.A.R/Assets/Scripts/Gun.cs:16)
这就是我得到的错误,这里是枪类的代码
using UnityEngine;
using System.Collections;
public class Gun : MonoBehaviour {
public GameObject bullet = null;
public float bulletSpeed = 500f;
void Update () {
if (Input.GetKeyDown (KeyCode.Mouse0)) {
/*
* Instantiate the bullet using the prefab and store it into the shot variable
*/
GameObject shot = GameObject.Instantiate(bullet, transform.position + (transform.forward * 2), transform.rotation) as GameObject;
/*
* Adding force
*/
shot.rigidbody.AddForce(transform.forward * bulletSpeed);
}
}
}
答案 0 :(得分:2)
问题是,子弹GameObject是否为空,并且由于尚未设置,当他尝试实例化一个空对象时,它会抛出一个异常。
你能做什么取决于游戏对象。您可以使用GameObject.Find
获取GameObject
项目符号,然后将其分配给项目符号。
public GameObject bullet = GameObject.Find("NameOfTheBulletGameobject");
另一种方法是将子弹游戏对象拖到检查器中的变量上。
public GameObject bullet;
然后,只需获取实际的项目符号对象并将其拖到脚本中的子弹变量中,然后在检查器中。
希望它有所帮助!