Jump to content
Unity Insider Forum

List mit Objekten befüllen und löschen


gombolo

Recommended Posts

Hallo zusammen, 

ich möchte eine Liste mit einer undefinierten Anzahl an Objekten befüllen. Diese Objekte sollen nach einer definierten Zeit wieder aus der Liste entfernt werden.

Ich fange wie folgt an:

	public class Entity
	{
		public GameObject go;
		public float lifeTime;
	}

	public List<Entity> listOfGameObjects = new List<Entity>();

Die Liste soll die Klasse Entity verwalten

		Entity entity = new Entity();
		
		//...hier passiert dies und das...ein GameObjekt wird erstellt usw...

		entity.go = instance;
		entity.lifeTime = Time.time + lifetime;
		
		// Objekt in die Liste eintragen
		listOfGameObjects.Add(entity);

Der Code funktioniert so nicht. Wenn ich "nur" zwei Objekte erstelle scheint es zu gehen, aber wenn ich mehr als zwei erstelle verhält sich der Prozess undefiniert. Die Objekte werden erstellt, jedoch bleiben diese an unterschiedlichen Stellen stehen und machen nichts mehr...

Mir scheint es so, dass ich keinen Speicherplatz bekomme. Ich kann jedoch keinen Fehler im Code finden. Ist die Herangehensweise bei Listen, wie ich es mache, eigentlich richtig? 

Danke und viele Grüße GOMBOLO

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 16 Minuten schrieb gombolo:

Mir scheint es so, dass ich keinen Speicherplatz bekomme.

Das auf keinen Fall. Programme machen nicht einfach komische Dinge, wenn sie keinen Speicherplatz mehr haben, sondern werfen entsprechende Fehler. Kannst ja im Task-Manager schauen, wie viel RAM du noch hast :)

vor 17 Minuten schrieb gombolo:

Die Objekte werden erstellt, jedoch bleiben diese an unterschiedlichen Stellen stehen und machen nichts mehr...

Wenn hier noch der Bewegungscode mit reinspielt, dann ist der Fehler schonmal nicht in dem Code, den du gepostet hast. Wie sieht denn dein Code mit und um Destroy() aus?

Alternativ kann ich mir vorstellen, dass dir hier die Referenzsemantik ein Bein stellt. Kann man ohne den restlichen Code, wo Entity-Objekte auftauchen, aber auch nicht wirklich sagen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja...lag doch nicht an der Liste :)  ich verwende C# zum ersten mal "richtig" und war mir nicht sicher ob ich bei der Benutzung was falsch gemacht habe. 

Der Fehler lag an der Methode zur Objektbewegung. Wenn ein Objekt im Pool deaktiviert wird, dann sollte man auch die Werte wieder zurück stellen ;) Sonst erhält das nächste aktivierte Objekt falsche Daten 😇

So einfach kann manchmal ein Programmiereleben sein...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...