2017-01-06 2 views
2

Ich versuche herauszufinden, welche Technik für eine bestimmte Reihe von Problemen am besten geeignet ist. Hier ein Beispiel:Effizienteste Techniken zum Anzeigen und Ausblenden von GameObject?

  • I "Boxes" habe, die alle aus einer Gruppe von UI Buttons werden, Text, Symbole. Mein Ziel ist es, dem Benutzer die Möglichkeit zu geben, diese verschiedenen Elemente zu verstecken/anzuzeigen , wie er/sie will.

Aus diesen Richtlinien kann ich mir vorstellen 4 verschiedene Möglichkeiten, damit umzugehen:

  1. Hide/diese Elemente anzeigen durch Aktivieren/Deaktivieren der Gameobject
  2. Zerstören Sie die Gameobject/Instantiate es, wenn ich es wieder brauche
  3. Setzen Sie das Objekt auf transparent oder undurchsichtig
  4. Legen Sie die Position des Objekts an einem unerreichbaren Ort, oder deren Skala nanoskopischen machen: P

Die Wendung ist, dass diese Boxen in einem 3D-Raum sein, in dem Sie navigieren können, was bedeutet, werden sie manchmal auf dem Bildschirm sein und manchmal nicht. Das hat seine Wichtigkeit, um zu bestimmen, welche Technik am besten ist?


Die Frage, die ich habe, sind:

  1. Kann ich im Voraus beurteilen, welche Lösung die Leistung wirksam sein wird? Gibt es eine Art von conscensus, der sagt , dass zum Beispiel aktivieren/deaktivieren ein Spielobjekt ist immer langsamer als Instantiierung zerstören?
  2. Gibt es irgendwo Listen über diesen Conscensus?
  3. Gibt es andere Techniken, um diese Aufgabe zu erfüllen?

ich es bin zu raten, ist alles über Erfahrung auf der Arbeit an verschiedenen Projekten/Aufgaben, obwohl ich es schwierig finden, wie ein Anfänger zu wissen, wo/wie die Informationen zu finden.

Es fühlt sich an wie in einer Sprache, wenn es mehrere Möglichkeiten gibt, dasselbe zu sagen, aber Sie sind nicht sicher, wie Sie es formulieren sollen, und noch schlimmer: wenn Sie die Existenz eines Wortes nicht wissen alles scheint.

Wenn es nicht für die Unity-Community/Stack Overflow und so weiter wäre, wäre ich in echten Schwierigkeiten, also nochmals vielen Dank dafür, hier zu sein und so hilfreich zu sein =).

Hinweis: Ich bin gerade auf den Profiler in Einheit gestolpert und werde schauen, was es tun kann.

Antwort

1

Das beste wäre no 1 das ist Activating/Deactivating die gameobject, warum?

no 2, verursachen performance Problem, wenn Sie eine Menge von Objekten auf einmal initiieren. ex: Abfeuern von Kugeln.Da Sie instanziieren und zerstören, wird eine neue Speicherzuweisung erstellt, um die einzelnen Instanzen zu speichern und die Speicherposition wiederzufinden, um sie beim Löschen zu löschen.

no 3, haben performance Problem und colliding Problem, es wird ein Leistungsproblem sein, wenn es eine Menge von Objekten in der Szene aber dann tranparent ist. Da es sogar transparent ist, muss die GPU sie dennoch rendern. Es ist also egal, ob du es transparent oder undurchsichtig machst. es wird kollidierendes Problem haben, wenn Ihr Objekt Collider aber transparent hat. so wird es mit anderen Objekten kollidieren.

no 4, wird performance Problem haben, denn wenn Sie sie skalieren, habe ich Angst, dass Sie dynamische Batching brechen wird, die Draw Call erhöhen wird. Ich habe diese Methode auch schon einmal ausprobiert und es ist nicht gut, wenn sich Ihre Kamera 360 bewegen kann, stellen Sie sich vor, Sie verstecken es hinter sich, auch wenn es weit ist. Wenn du zurückblickst, kannst du sie immer noch sehen.

Zu leicht Activate/Deactivate Objekte wie Sie normalerweise tun (Instantiate/Destroy), können Sie versuchen Pooling System. https://github.com/6ameDev/Advanced-Pooling-System

+1

Vielen Dank für Ihre Antwort und Erklärung Tengku. Es war sehr informativ ... Ich bin froh, eine neue Möglichkeit mit dieser Pooling-Technik zu bekommen! Vielen Dank an dich! – Gynko

+0

@Gynko Ok, vergiss nicht, als Antwort zu markieren, wenn es dir hilft. So werden auch andere Leute, die das gleiche Problem hatten wie du, klar werden. –

+0

Auch, nur um es zu sagen. Sie können viele nützliche Dinge und Ansätze mit diesem Buch (von vielen anderen natürlich) finden. http://spieleprogrammingpatterns.com/ – zhekazheka

Verwandte Themen