2016-06-03 9 views
0

Ich bin sehr mit diesem Stück Code fest. Ich werde nicht den ganzen Code nur die relevanten Stücke veröffentlichen.Variable wird nicht zugewiesen, wenn ihr Kind zerstört wird, obwohl es zugewiesen ist?

Das Problem ist: Wenn der Spieler einen Punkt fällt, so fällt im Grunde das Kind des mainhand oder supporthand (Inventar Slots), dann wird es den folgenden Fehler geben: ‚Die Variable‚mainhand‘wird nicht vergeben. "

Die Variable wurde jedoch zugewiesen und das Skript funktioniert so, wie es funktionieren soll. Ich will nur den Fehler loswerden. Irgendwelche Ideen?

Bitte helfen!

public bool handsFull = false; 
     public Transform mainHand; 
     public Transform supportHand; 

     public GameObject player; 
     public GameObject[] Items; 

     public float throwDistance = 2f; 

void Update() { 
    //Dropping Items 
      if (Input.GetKey (KeyCode.G)) { 

       if (Input.GetMouseButtonDown (0) && mainHand.childCount > 0) { 
        GameObject itemToDrop = mainHand.GetChild(0).gameObject; 
        DropItem (itemToDrop); 


       } 
       if (Input.GetMouseButtonDown (1) && supportHand.childCount > 0) { 
        GameObject itemToDrop = supportHand.GetChild(0).gameObject; 
        DropItem (itemToDrop); 



       } 

      } 
} 

public void DropItem(GameObject itemToDrop) 
    { 
     for (int i = 0; i < Items.Length; i++) { 
      GameObject itemDropped; 
      if (Items[i].name == itemToDrop.name) { 
       itemDropped = (GameObject)Instantiate (Items [i], itemToDrop.transform.position, Quaternion.identity); 
       itemDropped.tag = "Item"; 
       itemDropped.name = itemToDrop.name; 
       Destroy (itemToDrop); 
       itemDropped.transform.SetParent (null); 
       itemDropped.transform.Translate (0, 0, throwDistance); 
       itemDropped = null; 
       itemToDrop = null; 
       return; 

       //hand not defined? - 

      } 


     } 
} 
+0

http://answers.unity3d.com/questions/627750/the-variable-has-not-been-assigned-but-it-has.html –

+0

Welche Zeile löst die Ausnahme aus? – Gusman

+0

@SimoErkinheimo Nun, ich habe gelesen, dass die Mainhand/Supporthand keine Prefabs sind, noch werden sie jemals aus der Szene entfernt. Zu diesen Variablen wird nie etwas unternommen. Die Verbindung hilft mir also nicht traurig. Irgendwelche Ideen? – Calis

Antwort

4

Die Lösung ist einfach, Einheit ist nicht OO.

Vergessen Sie nicht, Ihr Skript über ...

... existiert nur als Bestandteil von rund Gameobject ... zu einem Gameobject angebracht.

Es ist sehr wahrscheinlich, dass es irgendwo ein GameObject gibt, an das das Skript angehängt ist. Du weißt es nicht oder du hast es vergessen.

(*) Denken Sie daran, dass Prefabs Sie in Unity leicht auffangen können. Vergessen Sie nicht, dass Sie in Unity nur Inspektor-Drags innerhalb von Prefabs setzen können - das ist etwas verwirrend. In einem Prefab können Sie keine Verbindung zu irgendetwas in der "Außenwelt" herstellen.

+0

Oh Gott. Ich fühle mich dumm. Danke, Mann. Es war tatsächlich ein anderes Objekt in der Szene, dass ich es versehentlich aufsetzte. Nicht bemerkt, weil es in der Anatomie des Charakters war. – Calis

+0

Nichts Dummes im Geringsten, als ich anfing, Unity zu benutzen, brauchte ich 3 Jahre, um das herauszufinden, Prost – Fattie

Verwandte Themen