2016-09-18 11 views
-2

仲間と仲間私はいくつかのコードでもう一度問題を抱えています。基本的には、私が開始し、それがエラーを投げている健康パックを作成しようとする:Unity C#でHealthPackを作成しようとするとNullReferenceExceptionが表示されるのはなぜですか?

NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていない HealthSpawnerScript.Update()(Assets/Scripts/HealthSpawnerScript.cs: 31)

以下は私が実行しているコードです。ゲームオブジェクトのPlayerControllerには、PlayerHealth()というPlayer Healthを返すためのメソッドが格納されています。目を覚ましたところで、私は後にスクリプトとメソッドを見つけるためにplayerControllerを設定しました。その後、私はメソッドを呼び出して、後でスクリプトで使用するために変数に代入しようとしています。私はこれがシンプルであるべきだと知っていますが、私は脳のおならを持っています。

public PlayerController playerController; 
private int healthHolder; 

void OnAwake() 
{ 
    playerController = GameObject.Find ("PlayerHealth").GetComponent<PlayerController>(); 

} 
// Use this for initialization 
void Start() 
{ 
    //set healthExist to false to indicate no health packs exist on game start 
    healthExist = false; 

    //playerController = GameObject.Find ("PlayerHealth").GetComponent<PlayerController>(); 
} 

// Update is called once per frame 
void Update() 
{ 
    healthHolder = playerController.PlayerHealth(); 

答えて

0

OnAwakeというUnityコールバック関数はありません。あなたはおそらくAwake機能を探しています。

問題がまだ解決されている場合は、コードを分割して何が失敗しているかを調べる必要があります。

playerController = GameObject.Find ("PlayerHealth").GetComponent<PlayerController>(); 

GameObject.Find("PlayerHealth")が失敗した場合、そのシーンでその名前のゲームオブジェクトがないことを意味し、

ので
void Awake() 
{ 
    GameObject obj = GameObject.Find("PlayerHealth"); 
    if (obj == null) 
    { 
     Debug.Log("Failed to find PlayerHealth GameObject"); 
     return; 
    } 

    playerController = obj.GetComponent<PlayerController>(); 
    if (playerController == null) 
    { 
     Debug.Log("No PlayerController script is attached to obj"); 
    } 
} 

に変更する必要があります。スペルを確認してください。

obj.GetComponent<PlayerController>();が失敗した場合、PlayerHealth GameObjectに添付されているPlayerControllerというスクリプトはありません。あなたの問題を簡素化する!

+0

私は必要なものではありませんが、わかりましたが、PlayerControllerメソッドをPlayerControllerというスクリプトを持っているPlayerShipになる実際のオブジェクトを見つけるのではなく、PlayerControllerに呼び出しました。 – Phillipv20

+0

'OnAwake'関数はどうですか?それは正しい? – Programmer

関連する問題