-1

MissingReferenceException: タイプ 'GameObject' のオブジェクトは破棄されましたが、まだアクセスしようとしています。スクリプトで null かどうかを確認するか、オブジェクトを破棄しないようにする必要があります。UnityEngine.Object.Internal_InstantiateSingle (UnityEngine.Object data, Vector3 pos, Quaternion rot) (C:/BuildAgent/work/d9c061b1c154f5ae/Runtime/ExportGenerated/Editor/UnityEngineObject.cs:44) UnityEngine.Object.Instantiate (UnityEngine.Object オリ​​ジナル) 、Vector3 位置、Quaternion 回転) (C:/BuildAgent/work/d9c061b1c154f5ae/Runtime/ExportGenerated/Editor/UnityEngineObject.cs:53 で) Gun.Update () (J:/WAR/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);
        }
    }
}
4

1 に答える 1

2

問題は、弾丸の GameObject が null であり、設定されていないため、null オブジェクトをインスタンス化しようとすると、例外がスローされることです。

できることは、ゲームオブジェクトによって異なります。を使用GameObject.Findして弾丸を取得し、GameObjectそれを弾丸変数に割り当てることができます。

public GameObject bullet = GameObject.Find("NameOfTheBulletGameobject");

これを行う別の方法は、弾丸ゲームオブジェクトをインスペクターの変数にドラッグすることです。

public GameObject bullet;

次に、実際の bullet オブジェクトを取得し、インスペクターでスクリプトの bullet 変数にドラッグします。

それが役に立てば幸い!

于 2012-09-10T12:53:55.100 に答える