Rückblick: Geschoss-Pool
Teil des Abschnitts Spielarchitektur in Unity der Unity-Journey von Coddy. Lektion 40 von 50.
Aufgabe
MittelZielübung. Mit den Pfeiltasten bewegt sich der Panzer nach links und rechts (bereit), und die beiden roten Ziele haben ein Target-Skript mit Hit() (bereit). Lass den Panzer Kugeln aus dem Pool abfeuern:
- Behalte in
Tank.cseinenObjectPool<Bullet>, der Kugeln ausbulletPrefaberstellt, sie beim Entnehmen aktiviert und bei der Rückgabe deaktiviert, die freigegebenen Kugeln zerstört und höchstens 4 Kugeln als Reserve behält. - Mit der Leertaste wird eine Kugel aus dem Pool genommen und 1 Einheit vor dem Panzer gestartet.
- In
Bullet.csfliegt eine Kugel mitspeed(15) nach vorne (+z). Wenn sie etwas mit einem Target-Skript trifft (der Collider der Kugel ist ein Trigger), ruft sieHit()des Ziels auf und kehrt sofort in den Pool zurück. Eine Kugel, die nichts trifft, kehrt nachlife(1) Sekunde zurück. - Jeder Schuss erhält die volle Lebensdauer einer Kugel, auch eine wiederverwendete, und eine Kugel kehrt pro Schuss genau einmal in den Pool zurück.
Drücke Play, schieße auf beide Ziele und klicke dann auf Check.
Probier es selbst
using UnityEngine;
using UnityEngine.Pool;
public class Bullet : MonoBehaviour
{
public float speed = 15f;
public float life = 1f;
// Fliege vorwärts; kehre zum Pool zurück, wenn du ein Target triffst oder nach life Sekunden
}
Alle Lektionen in Spielarchitektur in Unity
1Komponenten statt Hierarchien
Kleine KomponentenEin Basisskript für GegnerAbstrakte KomponentenKomponenten im ZusammenspielRückblick: Modularer Geschützturm4Serialisierte Daten
Serialisierbare KlassenListen im InspectorEnums im InspectorRückblick: Loot-Tabelle7Zustandsautomaten
Zustände als KlassenEin ZustandsautomatÜbergängeGegner-KIWiederholung: Türzustände10Projekt: Arena-Überlebenskampf
Der HeldGegnertypen2Interfaces in Unity
IDamageableInterfaces und TryGetComponentGetComponentsRückblick: Interaktionstaste5ScriptableObjects
Daten-AssetsWaffenwerteGemeinsame EinstellungenWellen als DatenRückblick: Item-Datenbank8Wiederverwendbarer Code
ErweiterungsmethodenEin generisches SingletonGenerische HilfsmethodenRückblick: FindNearest3Ereignisse
C#-Events in UnityIn OnEnable abonnierenUnityEvent-FelderEvents steuern die UIRückblick: Achievement-Popup9Objekt-Pooling
Warum Objekte poolenEin Pool mit einer WarteschlangeUnitys ObjectPoolRückblick: Geschoss-Pool