2017-10-22 2 views
0

Die Behauptung gibt Fehler und sagt Assertion fehlgeschlagen. Wert wurde Null Erwartet: Wert nicht Null war UnityEngine.Assertions.Assert: IsNotNull (Transform)Warum kann ich keinen Slot für meinen Spieler erstellen, damit mein Gegner sie verfolgt oder ihr folgt?

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

Wenn Antwort Werke Zayed, fügen Sie es als die richtige auswählen, indem Sie das Häkchen klicken. – Almo

Antwort

2

Awake() -Methode vor Beginn() aufgerufen wird Assert.IsNotNull (Player); bedeutet, dass der Player nicht null sein darf. Sie weisen Player jedoch später in der Methode Start() zu, nachdem Sie in der Methode Awake() Assert verwendet haben.
Sie sollten die Assert nach dieser Zeile verwenden:

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

hat nicht funktioniert, ich will mein Feind den Spieler jagen, damit ich den Spieler in enemymove Skript des Feindes zuweisen kann, aber es schafft keinen Steckplatz zuzuweisen :( –

+0

Es muss öffentlich sein. Der Editor macht nur Slots für öffentliche Variablen. – code11

Verwandte Themen