So finden Sie inaktive Objekte mit GameObject.Find(" ") in Unity3D?
Ich brauchte, zu finden, inaktive Objekte in Unity3D mit C#.
Habe ich 64 Objekte, und immer, wenn ich auf eine Schaltfläche klicken, dann wird es aktiviert /inaktiviert Objekte für den entsprechenden button zur Laufzeit. Wie finde ich inaktive Objekte, die in dieser Zeit?
InformationsquelleAutor user2914179 | 2013-10-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, mit
GameObject.Find(...)
wird nie wieder alle inaktiven Objekte. Wie in der Dokumentation dargelegt:Selbst wenn Sie könnten, würden Sie wollen, zu halten diese teure Anrufe auf ein minimum.
Gibt es "tricks" zu finden, inaktiv GameObjects, wie mit Hilfe eines
Ressourcen.FindObjectsOfTypeAll(Typ type)
nennen (aber das sollte mit äußerster Vorsicht verwendet werden).Aber Ihre beste Wette ist, schreiben Ihre eigenen management-code. Dies kann eine einfache Klasse hält eine Liste von Objekten, die Sie vielleicht zu finden und zu verwenden. Sie können nun Ihr Objekt in auf der ersten laden. Oder vielleicht hinzufügen/entfernen auf immer aktiv oder inaktiv ist. Was auch immer Ihr spezielles Szenario braucht.
InformationsquelleAutor Bart
Wenn Sie die parent-Objekt (nur leeres Objekt, spielt die Rolle eines Ordners) finden Sie aktive und inaktive Objekte wie diese:
MainMenuItems - ist Ihre parent-Objekt.
Bitte beachten Sie, dass Find() ist langsame Methode, so sollten Sie mithilfe von Verweise auf Objekte oder organisieren Wörterbuch-Sammlungen mit gameobjects, die Sie zugreifen müssen, sehr oft
Glück!
InformationsquelleAutor Dzianis Yafimau
Können Sie Prädikate.
Holen Sie sich den gameObjects und überprüfen Sie Sie mit einem Prädikat wie folgt:
und vergessen Sie nicht using System; mit System.Sammlungen.Generic;
InformationsquelleAutor Bamdad
Obwohl es nicht die richtige Antwort, aber dies ist, was ich Tat in meinem Fall.
1) ein script zuordnen (inaktiv) Objekte im Spiel und anstatt dann inaktiv halten Sie es aktiv.
2) Positionieren Sie Sie aus der Szene irgendwo.
3) Setzen Sie ein flag in der Skript, was sagt inaktiv.
4) In der Update () - prüfen Sie das Kennzeichen inaktiv und überspringen-Funktion aufruft, wenn auf false festgelegt.
5) Wenn erforderlich, das Objekt, positionieren Sie es an der richtigen Stelle und setzen Sie das flag aktiv.
Wird es ein bisschen ein performance-Problem, aber das ist die einzige Lösung, die ich denken konnte, so weit.
InformationsquelleAutor Veloceo