Podsumowanie: pula pocisków
Część sekcji Architektura gier w Unity ścieżki Unity w Coddy. Lekcja 40 z 50.
Wyzwanie
ŚredniĆwiczenie celności. Strzałki przesuwają czołg w lewo i w prawo (gotowe), a dwa czerwone cele mają skrypt Target z metodą Hit() (gotowe). Spraw, aby czołg strzelał pociskami z puli:
- W pliku
Tank.csużywaj puliObjectPool<Bullet>, która tworzy pociski na podstawiebulletPrefab, włącza je po pobraniu i wyłącza po zwróceniu, niszczy pociski zwalniane z puli i przechowuje najwyżej 4 zapasowe pociski. - Spacja pobiera pocisk z puli i uruchamia go 1 jednostkę przed czołgiem.
- W pliku
Bullet.cspocisk leci do przodu (+z) z prędkościąspeed(15). Gdy trafi w obiekt ze skryptem Target (kolider pocisku jest wyzwalaczem), wywołuje metodęHit()celu i natychmiast wraca do puli. Pocisk, który w nic nie trafi, wraca do puli polife(1) sekundzie. - Każdy strzał zapewnia pociskowi pełny czas życia, również pociskowi użytemu ponownie, a pocisk wraca do puli dokładnie raz na strzał.
Naciśnij Play, strzel do obu celów, a następnie naciśnij Check.
Spróbuj swoich sił
using UnityEngine;
using UnityEngine.Pool;
public class Bullet : MonoBehaviour
{
public float speed = 15f;
public float life = 1f;
// Leć do przodu; wróć do puli po trafieniu w Target lub po upływie life sekund
}
Wszystkie lekcje w sekcji Architektura gier w Unity
1Komponenty, nie hierarchie
Małe komponentyPodstawowy skrypt przeciwnikaKomponenty abstrakcyjneWspółpracujące komponentyPodsumowanie: modułowa wieżyczka4Dane serializowane
Klasy serializowalneListy w InspectorzeWyliczenia w InspectorzePodsumowanie: tabela łupów10Projekt: Arena przetrwania
BohaterTypy wrogów2Interfejsy w Unity
IDamageableInterfejsy i TryGetComponentGetComponentsPodsumowanie: klawisz interakcji5ScriptableObjects
Zasoby danychStatystyki broniWspółdzielone ustawieniaFale jako danePowtórka: baza danych przedmiotów8Kod wielokrotnego użytku
Metody rozszerzająceGeneryczny singletonGeneryczne metody pomocniczePodsumowanie: FindNearest3Zdarzenia
Zdarzenia C# w UnitySubskrypcja w OnEnablePola UnityEventZdarzenia sterują interfejsemPodsumowanie: wyskakujące okno osiągnięcia6Zapisywanie za pomocą JSON
JsonUtilityZapisz gręWczytywanie i wartości domyślnePowtórka: sloty zapisu9Pooling obiektów
Dlaczego używać poolingu obiektówPool z kolejkąObjectPool w UnityPodsumowanie: pula pocisków