peachplayer Geschrieben 25. Oktober 2016 Melden Share Geschrieben 25. Oktober 2016 Hallo zusammen Ich möchte GameObjects kopieren, sodass eine rechteckige Fläche entsteht, d.h. es sollte ein Maisfeld geben. Habe es mit folgendem Code probiert: using UnityEngine; using System.Collections; public class Objekte_kopieren : MonoBehaviour { public int i; public GameObject[] prefab; public GameObject field; public int abstand = 3; // Use this for initialization void Start () { for (i = 0; i < 100; i++) { prefab[i] = Instantiate(field) as GameObject; Instantiate(prefab[i], new Vector3(i * 2.0F, 0, 0), Quaternion.identity); prefab[i].transform.localPosition = new Vector3(-200, 0, (i * abstand)); prefab[i].name = "Mais" + i; } } // Update is called once per frame void Update () { } } Kann mir jemand helfen? Gruss peachplayer Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 25. Oktober 2016 Melden Share Geschrieben 25. Oktober 2016 Was funktioniert denn nicht? Ich sehe jedenfalls, dass du dein Array von GameObjects noch initialisieren solltest: GameObject[] prefab = new GameObject[100]; for (i = 0; i < 100; i++) ... und dann macht wohl eher das hier Sinn: GameObject[] prefab = new GameObject[100]; for (i = 0; i < 100; i++) { prefab[i] = Instantiate(field, new Vector3(i * 2.0F, 0, 0), Quaternion.identity); prefab[i].transform.localPosition = new Vector3(-200, 0, (i * abstand)); prefab[i].name = "Mais" + i; } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
peachplayer Geschrieben 25. Oktober 2016 Autor Melden Share Geschrieben 25. Oktober 2016 Das Problem ist, dass keine Kopien des GameObjects erstellt werden, d.h. es passiert nichts. Gruss peachplayer Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Helishcoffe Geschrieben 25. Oktober 2016 Melden Share Geschrieben 25. Oktober 2016 Warum rufst du Instantiate denn 2 mal auf? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
peachplayer Geschrieben 25. Oktober 2016 Autor Melden Share Geschrieben 25. Oktober 2016 Warum rufst du Instantiate denn 2 mal auf? weil sonst leider eine Fehlermeldung kommt! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
GelegenheitsProgrammierer Geschrieben 25. Oktober 2016 Melden Share Geschrieben 25. Oktober 2016 prefab[i] = (GameObject)Instantiate(field, new Vector3(i * 2.0F, 0, 0), Quaternion.identity); prefab[i] = Instantiate(field, new Vector3(i * 2.0F, 0, 0), Quaternion.identity) as GameObject; versuch mal ein von den beiden dann sollte die Fehlermeldung verschwinden, wenn es die ist, an die ich denke. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Ikarus Geschrieben 25. Oktober 2016 Melden Share Geschrieben 25. Oktober 2016 Falls dir so etwas vorschwebt wie im unten angehängten Bild (nur eben mit Mais), dann hätte ich da was für dich. Das Wichtigste zuerst: 1. Dein Prefab ist auch ein prefab 2. Die Werte im Inspektor haben wohl Vorrang vor den definierten im Werten im Script. Falls dort, im Script, die Werte für public-Werte geändert werden und es nicht klappt, könnte es daran liegen, dass im Inspector noch andere Werte stehen. Etwas, dass ich auch sehr gerne vergesse. Nun das Script: using UnityEngine; using System.Collections; public class LoadPrefabs : MonoBehaviour { public GameObject prefabHaus; public GameObject[] field = new GameObject[120]; void Start() { float offsetX = 30f; float offsetZ = 10f; float abstandX = 20f; float abstandZ = 25f; int x; // einfache Zaehlvariable int z; // einfache Zaehlvariable int k; // einfache Zaehlvariable float newX; float newZ; for (z = 0; z < 10; z++) { for (x = 0; x < 12; x++) { k = z * 12 + x; newX = offsetX + x * abstandX; newZ = offsetZ + z * abstandZ; field[k] = Instantiate(prefabHaus, new Vector3(newX, 1f, newZ), Quaternion.identity) as GameObject; field[k].name = "Haus " + k; Debug.Log(field[k].name + " an Position " + newX + " : " + newZ); } } } } Das Prefab muss du im Inspector auf das entsprechende Feld ziehen. Ja, das war's eigentlich schon Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
peachplayer Geschrieben 25. Oktober 2016 Autor Melden Share Geschrieben 25. Oktober 2016 Falls dir so etwas vorschwebt wie im unten angehängten Bild (nur eben mit Mais), dann hätte ich da was für dich. Das Wichtigste zuerst: 1. Dein Prefab ist auch ein prefab 2. Die Werte im Inspektor haben wohl Vorrang vor den definierten im Werten im Script. Falls dort, im Script, die Werte für public-Werte geändert werden und es nicht klappt, könnte es daran liegen, dass im Inspector noch andere Werte stehen. Etwas, dass ich auch sehr gerne vergesse. Nun das Script: using UnityEngine; using System.Collections; public class LoadPrefabs : MonoBehaviour { public GameObject prefabHaus; public GameObject[] field = new GameObject[120]; void Start() { float offsetX = 30f; float offsetZ = 10f; float abstandX = 20f; float abstandZ = 25f; int x; // einfache Zaehlvariable int z; // einfache Zaehlvariable int k; // einfache Zaehlvariable float newX; float newZ; for (z = 0; z < 10; z++) { for (x = 0; x < 12; x++) { k = z * 12 + x; newX = offsetX + x * abstandX; newZ = offsetZ + z * abstandZ; field[k] = Instantiate(prefabHaus, new Vector3(newX, 1f, newZ), Quaternion.identity) as GameObject; field[k].name = "Haus " + k; Debug.Log(field[k].name + " an Position " + newX + " : " + newZ); } } } } Das Prefab muss du im Inspector auf das entsprechende Feld ziehen. Ja, das war's eigentlich schon Ganz herzlichen Dank Ikarus! Das hat wunderbar geklappt! Siehe Bild unten! Gruss peachplayer Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 25. Oktober 2016 Melden Share Geschrieben 25. Oktober 2016 weil sonst leider eine Fehlermeldung kommt! "Warum hast du dein Haus angezündet?" "Weil mir die Vorhänge nicht gefallen haben!" Nicht einfach irgendetwas machen, bis der Fehler weg ist, sondern herausfinden und verstehen, was die Fehlermeldung verursacht Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.