Die Variable sp von BirdControl wurde nicht zugewiesen (unity error record)

falsche Beschreibung:

Verwenden Sie [HideInInspector] für eine öffentliche Variable in   einem Skript ( Bird.css ) ( [HideInInspector] bewirkt, dass die Variable nicht im Inspector angezeigt, sondern serialisiert wird. ), die zum Abrufen der SpringJoint2D- Komponente des 2D-Objekts verwendet wird. Verweisen Sie auf diese Komponentenvariable in einem anderen Skript (GameManager.css). Beim Ausführen des Spiels tritt ein Fehler auf, dass der Wert der Variablen nicht abgerufen wurde.
Definition:

//Bird.css

//获取spring joint 2D组件
    //[HideInInspector]使变量不显示在 Inspector 中,但进行序列化。
    [HideInInspector]
    public SpringJoint2D sp;

Zitieren:

//GameManager.css
void Instante()
{
    
    
    ...
    birds[i].sp.enabled = false;
    ...
}

Fehlergrund:

  Da die Methode Instante() zu Beginn einmalig aufgerufen werden muss, wird die Call-Anweisung in start() geschrieben und auch die Erfassung von SpringJoint2D in start() definiert.

//Bird.css

void Start()
    {
    
    
        sp = GetComponent<SpringJoint2D>();
        ...
    }
//GameManager.css

void Start()
    {
    
    
        //初始化
        Instante();
    }

  Die start()-Methode wird einmal vor update() aufgerufen, und die start() der beiden Skripte werden am Anfang ausgeführt, was schließlich zur Ausführung der Instante()-Methode führt.GameManager.css bekommt die SpringJoint2D nicht erhalten in Bird.css-Komponenten.

Lösung:

  Die Awake()-Methode wird zuerst in Unity aufgerufen, sodass die SpringJoint2D-Komponentenerfassung in Awake() platziert werden kann und die Instante()-Methode weiterhin in start() platziert werden kann.

//Bird.css

 private void Awake()
    {
    
    
        sp = GetComponent<SpringJoint2D>();
    }

Supongo que te gusta

Origin blog.csdn.net/qq_42540393/article/details/126312463
Recomendado
Clasificación