W tym kroku omówiono, w jaki sposób przypisać broń do gracza na początku gry.
Gdy gracz spawnuje się po raz pierwszy, przyznaj mu pierwszą broń z tablicy WeaponGranters
. W tym celu musisz zasubskrybować funkcję dla każdego Panelu startowego gracza. Więcej szczegółów na temat zdarzeń, które można subskrybować, patrz Kodowanie interakcji z urządzeniem.
Aby utworzyć subskrypcje dla zdarzeń spawnu gracza i przypisać graczowi jego pierwszą broń, wykonaj następujące instrukcje:
-
Dodaj nową metodę
OnPlayerSpawn()
do klasyteam_elimination_game
. Ta metoda pozwala zyskać pewność, że gracz otrzyma właściwą broń przy pierwszym spawnie oraz przy kolejnych respawnach.OnPlayerSpawn(InPlayer : agent) : void = Print("Gracz właśnie się zespawnował!")
-
Aby utworzyć subskrypcje w celu wywoływania skonfigurowanych przed momentem funkcji dla powiązanych z nimi zdarzeń, musisz dodać do metody
OnBegin()
nowy kod. Utwórz pętlęfor
, aby subskrybować zdarzenieSpawnedEvent
każdego punktu spawnu gracza za pomocą metodyOnPlayerSpawn
.OnBegin<override>()<suspends> : void = # Pobierz wszystkich graczy set Teams = GetPlayspace().GetTeamCollection().GetTeams() set EliminationsToEndGame = WeaponGranters.Length Print("Liczba likwidacji do końca gry wynosi {EliminationsToEndGame}") for (Spawner : PlayerSpawners): Spawner.SpawnedEvent.Subscribe(OnPlayerSpawn) # Subskrybuj każdy Panel startowy gracza
-
Aby przyznać graczowi pierwszą broń, musisz uzyskać dostęp do pierwszego przyznawacza przedmiotów w tablicy
WeaponGranters
. Możesz w tym celu użyć nowej metody.- Dodaj nową metodę
GrantWeapon
do klasyteam_elimination_game
. Metoda ta wykorzystuje typoption
agenta i przypisuje mu broń w oparciu o wprowadzoną wartośćWeaponTier
.
GrantWeapon(InPlayer : ?agent, WeaponTier : int) : void= Print("Przyznawanie graczowi broni poziomu {WeaponTier}")
- W metodzie
GrantWeapon
uzyskaj dostęp do odpowiedniego przyznawacza przedmiotów z tablicyWeaponGranters
, wykorzystując wartośćWeaponTier
jako indeks. Uzyskaj dostęp do wartości wInPlayer
i zapisz tę wartość w zmiennejGrantedPlayer
.
GrantWeapon(InPlayer : ?agent, WeaponTier : int) : void= Print("Przyznawanie graczowi broni poziomu {WeaponTier}") if(ItemGranter := WeaponGranters[WeaponTier], GrantedPlayer := InPlayer?):
- Przyznaj graczowi odpowiednią broń za pomocą funkcji
ItemGranter.GrantItem
. Możesz sprawdzić rodzaj przypisanej broni, rejestrując wartośćWeaponTier
. Kod metodyGrantWeapon
powinien wyglądać następująco:
GrantWeapon(InPlayer : ?agent, WeaponTier : int) : void= Print("Przyznawanie graczowi broni poziomu {WeaponTier}") if(ItemGranter := WeaponGranters[WeaponTier], GrantedPlayer := InPlayer?): ItemGranter.GrantItem(GrantedPlayer)
- Dodaj nową metodę
-
Zmodyfikuj metodę
OnPlayerSpawn
tak, aby wywoływała metodęGrantWeapon
. Gdy gracz zostanie zespawnowany, zainicjuj liczbę całkowitąWeaponTier
z wartością zerową, aby odzwierciedlała indeks pierwszego przyznawacza przedmiotów w tablicyWeaponGranters
, a następnie wywołaj metodęGrantWeapon
, która przekazuje wartośćWeaponTier
i odwołanie do gracza. Kod metodyOnPlayerSpawn
powinien wyglądać następująco:OnPlayerSpawn(InPlayer : agent) : void= Print("Gracz właśnie się zespawnował!") WeaponTier : int = 0 GrantWeapon(option{InPlayer}, WeaponTier) Print("Zespawnowanemu graczowi przyznano broń poziomu {WeaponTier}")
-
Zapisz skrypt w Visual Studio Code, skompiluj go, a następnie na pasku narzędzi UEFN kliknij opcję Uruchom sesję, aby przetestować poziom w grze. W trakcie testu poziomu w grze gracz powinien pojawiać się z pierwszą bronią z tablicy
WeaponGranters
. Sprawdź to zachowanie w dzienniku.
Następny krok
W kolejnym kroku tego samouczka dowiesz się, jak monitorować graczy za pomocą map i uzupełniać te mapy po rozpoczęciu gry.