2016-04-09 6 views
4

Ich habe Probleme mit dem Hinzufügen eines Skripts, das ich an einen Cube in der Laufzeit geschrieben habe. Ich habe viele andere Leute gesehen, die danach gefragt haben, aber anscheinend haben sie es behoben.Unity Komponente hinzufügen

Code:

  // Insert 
      GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube); 
      // Appearance 
      cube.GetComponent<Renderer>().material.SetColor("_Color", Color.yellow); 
      Shader transparent; 
      transparent = Shader.Find("UI/Default"); 
      cube.GetComponent<Renderer>().material.shader = transparent; 
      // 
      // 
      // Postioning 
      //cxcxcxcxc 
      cube.transform.position = new Vector3((xpos), (ypos), zpos); 
      cube.transform.localEulerAngles = new Vector3(90, 0, 0); 


      var myScript = cube.gameObject.AddComponent<CoinCollect>(); 

Dieser Code erstellt einen Würfel, fügt Shadern und positioniert sie. Ich möchte nun ein Skript hinzufügen, das ich "CoinCollect" genannt habe, welches mit der letzten Codezeile ist. Dies führt nicht zu Fehlern, aber wenn das Spiel ausgeführt wird, wird das Skript nicht hinzugefügt. Könnte jemand helfen? Ich schaute auf die Dokumentation, aber es zeigte hauptsächlich, was ich tat.

+1

"Cube" ist bereits Ihr GameObject. Ich denke nicht, dass dies das Problem beheben wird. -> cube.AddComponent ... – JoRouss

+0

Noch einmal, das hat mir keine Fehler aber das Skript wurde nicht hinzugefügt. – Andrew

+1

Schau in deiner Szene nach dem neuen Spielobjekt und schaue nach, ob 'CoinCollect' angehängt ist. – Programmer

Antwort

4

Stellen Sie sicher, dass der Skriptname und Klassenname innerhalb der Skripts gleich sind. Ansonsten ist nichts falsch mit Ihrem Code. Auch die offiziellen Dokumente tun es auf die gleiche Weise:

Unity Docs:

// Adds the sphere collider to the game object 
SphereCollider sc = gameObject.AddComponent<SphereCollider>(); 

Und this answer auf Unity Answers schlagen die gleiche Art und Weise Skripten hinzuzufügen:

AddComponent und GetComponent verwenden die Name der Klasse im Skript, kein Pfad zum Skript.

AddComponent("DestroyOnTouch"); 

Oder bevorzugt:

AddComponent<DestroyOnTouch>(); 

Da dies wird Ihnen eine Kompilierung Fehler, wenn die Klasse nicht, eher als ein Laufzeitfehler gefunden werden kann.

auch:

  • Wie wissen Sie, dass das Skript nicht funktioniert? Versuchen Sie eine einfache Debug.Log() und überprüfen Sie, es könnte ein Fehler im Skript selbst sein.
  • Wird der Code, den Sie in der Frage gepostet haben, jemals ausgeführt? Wo hast du es hingestellt? In einem Skript? Dann überprüfen Sie, ob es an einige gameObject angeschlossen ist oder angerufen wird. Außerdem sollten Sie prüfen, ob die Methode, in der Sie den Code geschrieben haben, aufgerufen wird.
  • Um das oben zu überprüfen, legen Sie eine Debug.Log("The main script ran"); in den gleichen Code-Block und führen Sie Ihr Spiel. Dann überprüfen Sie die Konsole in Unity.
+0

Oh danke, mir wurde klar, dass das Münzskript nicht richtig benannt wurde und aufgrund eines anderen Codes lief die Zeile nicht. Das sollte ich beim nächsten Mal überprüfen. Danke :) – Andrew

+0

@Andrew Du bist willkommen :) –

Verwandte Themen