Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

06.01.2014, 19:04

Unity destroy Gameobject

Unity destroy Gameobject


Hey Leute,

habe da ein Problem in Unity und zwar:

Ich nutze eine Queue in meinem Spiel, um ein haufen GameObjects richtig zu kontrollieren. Dabei soll immer genau dann ein neues GameObject erstellt werden und in die Queue eingefügt werden, wenn das älteste zerstört wurde.

Soweit so gut. Die GameObjects haben ein script drauf, dass wenn sie aus der sichtweite sind, gameobject.destroy aufgerufen wird und dadurch doch eigentlich die reference in der Queue ==null sein sollte. Doch wenn ich myQueue.Peek() == null teste wird das nie war, egal wie lange ich warte.

Renegade

Alter Hase

Beiträge: 494

Wohnort: Berlin

Beruf: Certified Unity Developer

  • Private Nachricht senden

2

06.01.2014, 22:40

Zeig mal ein bisschen Code, dann kann ich dir vielleicht helfen.
Liebe Grüße,
René

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

3

07.01.2014, 08:49

Object.Destroy() ist eine Unity eigene Funktionalität, während der Garbage Collector vom viel weiter darunter liegenden Mono durchgeführt wird. Object.Destroy() sagt Unity also, dass das GameObject bzw. die Komponente nicht mehr benötigt wird, Unity kümmert sich auch darum, dass dieses an den entsprechenden Stellen nicht mehr verwendet/verworfen wird, dies beeinflusst aber die Garbage Collection nicht und es ist grundsätzlich nicht möglich, jede vorkommende Referenz an anderen Stellen auf null zu setzen.
Besser wäre es, wenn deine Objekte sich nicht einfach so selbst töten würden, sondern gleichzeitig auch noch bescheid geben würden, dass sie nicht mehr relevant sind. Entweder weist man diesen das entsprechende Objekt (das Teil, was bei dir die Queue beinhaltet) zu und von dort wird eine Methode aufgerufen oder in ihnen wird ein Event definiert und dein entsprechendes Objekt hängt sich an das Event eines jeden, sich selbst zerstörenden Objekts ran.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

4

11.01.2014, 21:21

Vielen Dank,

konnte mein Problem dank der Erläuterung über Destroy lösen :).

Werbeanzeige