Andy09 Geschrieben 2. MĂ€rz Melden Share Geschrieben 2. MĂ€rz Mahlzeit đ ich habe mir ein kleines C#-Script geschrieben, dass mir ein Grid erzeugen soll mit beliebigen Prefabs. Funktioniert auch alles. Jetzt möchte ich eine Methode schreiben, die z.B. bei Zeile 5, Spalte 5 das GameObject entfernt und ein anderes einsetzt. Ich glaube auch bereits auf dem richtigen Weg zu sein. Die Prefabs mĂŒssen glaube ich zur Laufzeit in einem Ressourcen-Ordner sein. Da habe ich auch mein zweites Test-Prefab angelegt und es wird auch geladen. Jetzt habe ich nur das Problem, ich weiĂ nicht wie ich das "alte" GameObject zerstören soll. Soweit ich gelesen habe gibt es die SetActive(false) Methode. Aber, ich möchte es nicht deaktivieren, ich möchte es komplett ersetzen. Schon alleine wegen dem Speicher und der Performance. GruĂ Andy PS: Wieso dauert es bei mir eigentlich mehrere Minuten (und ich ĂŒbertreibe nicht) bis der Post gepostet wird? Der Kreis dreht sich, und dreht sich, und dreht sich... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Andy09 Geschrieben 2. MĂ€rz Autor Melden Share Geschrieben 2. MĂ€rz Toll, jetzt war diesmal innerhalb von 1 Sekunde der Post gesetzt đ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 2. MĂ€rz Melden Share Geschrieben 2. MĂ€rz Guck mal hier : https://docs.unity3d.com/ScriptReference/GameObject.html Unter den Static Methoden findest du Destroy. Wenn du da mal drauf klickst findest du einige Beispiele. Da siehst du dann wie und was alles zerstört werden kann. Der normale Destroy-Befehl wird am SchluĂ eines Zyklusses vollzogen. Also alles was dann noch in der Update des Objektes zu tun ist, wird auch sauber gemacht. Du kannst also ein Gameobjekt, wenn dein Script eine Referenz daraf gebildet hat, von der Ferne zerstören, oder es sich selbst zerstören lassen. So kann das Objekt, wenn es zerstört wird, z.B. selber noch ein Explosions-Objekt instanzieren, welches sich wiederum auch selber zerstören kann. Es gibt auch noch das DestroyImmediate, was ein Objekt sofort zerstört. Also auf der Stelle! Das solltest du aber nur Nutzen wenn du Editordinge machst, sonst nie!!! Im Spiel wĂŒrden dann nĂ€mlich Referenzen zu diesem Objekt nicht gelöscht werden und dann wird es unweigerlich irgendwann zu Fehlermeldungen und evtl. zum Crash kommen. Also einfach nur das Destroy nutzen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Andy09 Geschrieben 2. MĂ€rz Autor Melden Share Geschrieben 2. MĂ€rz Jaaaa, danke... ich habe eingegeben als Beispiel MyGameObject.Des... und verzweifelt auf ein Destroy gehoft, bin aber nie auf die Idee gekommen Destroy selbst zu schreiben. Manchmal ist echt sooo einfach đ Danke schön đ GruĂ Andy Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 3. MĂ€rz Melden Share Geschrieben 3. MĂ€rz vor 17 Stunden schrieb Andy09: Die Prefabs mĂŒssen glaube ich zur Laufzeit in einem Ressourcen-Ordner sein. Nicht unbedingt. Der Ressourcen-Ordner ist, wenn du mich fragst, auch fĂŒr 98% der Probleme eine schlechte Lösung. Einfach schon, weil man Strings zum Identifizieren der Assets benutzt. Meistens besser: Ein serialisiertes Feld anlegen (wenn nicht bekannt: einfach "public GameObject prefab;") und da dein Prefab im Inspektor rein ziehen. vor 17 Stunden schrieb Andy09: Aber, ich möchte es nicht deaktivieren, ich möchte es komplett ersetzen. Schon alleine wegen dem Speicher und der Performance. So ein GameObject hat, wenn du nicht Shakespeare in eine Komponente rein pastest, nicht mal ein KB groĂ. Mach dir mal nicht wegen drei GameObjects um deinen Speicher Sorgen. TatsĂ€chlich gibt es eine Technik Namens "Pooling", die Objekte recycelt, also deaktiviert und dann wieder re-aktiviert, anstatt ein neues Objekt zu instanziieren, weil Zerstören und Instanziieren weitaus schlechter fĂŒr die Performance ist als zeitweises Deaktivieren. Nicht, dass das fĂŒr dich einen Unterschied machen sollte, daher einfach weiter im Kurs - aber ich konnte das nicht stehen lassen, ohne den Samen des Zweifels an dieser Ansicht zu sĂ€hen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.