2017-10-22 4 views
0

アサーションでエラーが発生し、アサーションに失敗しました。値はnullが予想される た:値がnullではなかった UnityEngine.Assertions.Assert:IsNotNull(変換)なぜ私は敵が追いかけたりフォローしたりするようにプレイヤーのためのスロットを作れないのですか?

public class EnemyMove : MonoBehaviour 
{ 
private Transform Player; 
private Animator anim; 
private EnemyHealth enemyHealth; 

void Awake() 
{ 
    Assert.IsNotNull(Player); 
} 
void Start() 
{ 
    Player = GameManager.instance.Player.transform; 
    enemyHealth = GetComponent<EnemyHealth>(); 
    anim = GetComponent<Animator>(); 
    nav = GetComponent<NavMeshAgent>(); 
} 

void Update() 
{ 
    if (!GameManager.instance.GameOver && enemyHealth.IsAlive) 
    { 
     nav.SetDestination(player.position); 
    } 
    else if ((!GameManager.instance.GameOver || GameManager.instance.GameOver) && !enemyHealth.IsAlive) 
    { 
     nav.enabled = false; 
    } 
    else 
    { 
     nav.enabled = false; 
     anim.Play("Idle"); 
    } 
} 
} 
+1

ザイードの答えが動作する場合、チェックマークをクリックして、正しいものとして、それを選択してください。 – Almo

答えて

2

アウェイク()メソッドは、[スタート]() Assert.IsNotNull(プレーヤー)の前に呼び出されます。 は、Playerをnullにすることはできません。 しかし、Awake()メソッドでAssertを使用した後、Start()メソッドで後でPlayerを割り当てています。
あなたがこの行の後にアサートを使用する必要があります。

Player = GameManager.instance.Player.transform; 
+0

私は敵が敵のenemymoveスクリプトでプレイヤーを割り当てることができるようにプレイヤーを追いかけることができますが、割り当てるスロットは何も作成しません:( –

+0

エディターはパブリック変数用のスロットを作成します。 – code11

関連する問題