Bu adımda oyunun başında oyuncuya nasıl silah atanacağı gösteriliyor.
Bir oyuncu ilk kez doğduğunda ona WeaponGranters
dizisindeki birinci silahı ver. Bunu yapmak için her bir oyuncu doğma karesine işlevleri abone etmen gerekir. Abone olunabilir olaylar hakkında daha ayrıntılı bilgi için Cihaz Etkileşimlerinin Kodlanması sayfasına bakabilirsin.
Oyuncu doğma olaylarına abone olmak ve ilk silahını atamak için aşağıdaki adımları izle.
-
team_elimination_game
sınıfınaOnPlayerSpawn()
adlı yeni bir metot ekle. Bu metot, oyuncuya ilk kez doğduğunda ve yeniden doğduğunda doğru silahı atamanı sağlar.OnPlayerSpawn(InPlayer : agent) : void = Print("A Player just spawned!")
-
Yeni oluşturduğun fonksiyonları ilişkili oldukları olaylara abone yapmak için
OnBegin()
metoduna yeni bir kod eklemen gerekir.OnPlayerSpawn
kullanarak her bir oyuncunun çıkma yerine aitSpawnedEvent
olayına abone olmak için birfor
döngüsü oluştur.OnBegin<override>()<suspends> : void = # Tüm oyuncuları al set Teams = GetPlayspace().GetTeamCollection().GetTeams() set EliminationsToEndGame = WeaponGranters.Length Print("Number of eliminations to end game is {EliminationsToEndGame}") for (Spawner : PlayerSpawners): Spawner.SpawnedEvent.Subscribe(OnPlayerSpawn) # Her bir oyuncu doğma karesine bağla
-
Oyunculara ilk silahını vermek için
WeaponGranters
dizisindeki ilk eşya vericiye erişmen gerekir. Bunu yeni bir metotla yapman gerekecektir.team_elimination_game
sınıfına yeni birGrantWeapon
yöntemi ekle. Bu yöntem biroption
aracısı alır ve belirtilenWeaponTier
değerine göre oyuncuya bir silah atar.
GrantWeapon(InPlayer : ?agent, WeaponTier : int) : void= Print("Granting Player a weapon of Tier {WeaponTier}")
GrantWeapon
içinde dizin olarakWeaponTier
kullanarakWeaponGranters
dizisinden uygun eşya vericiye erişim sağla.InPlayer
içindeki değere erişipGrantedPlayer
değişkeninde depola.
GrantWeapon(InPlayer : ?agent, WeaponTier : int) : void= Print("Granting Player a weapon of Tier {WeaponTier}") if(ItemGranter := WeaponGranters[WeaponTier], GrantedPlayer := InPlayer?):
ItemGranter.GrantItem
kullanarak oyuncuya uygun silahı ver.WeaponTier
değerini günlüğe kaydederek hangi silahın verildiğini doğrulayabilirsin.GrantWeapon
kodun aşağıdaki koda benzer şekilde görünmeli.
GrantWeapon(InPlayer : ?agent, WeaponTier : int) : void= Print("Granting Player a weapon of Tier {WeaponTier}") if(ItemGranter := WeaponGranters[WeaponTier], GrantedPlayer := InPlayer?): ItemGranter.GrantItem(GrantedPlayer)
-
GrantWeapon
fonksiyonunu çağırmak içinOnPlayerSpawn
değerini değiştir. Bir oyuncu doğduğunda birWeaponTier
tamsayısını sıfırda başlatarakWeaponGranters
dizisindeki birinci eşya vericinin dizinini yansıt, ardındanWeaponTier
noktasını geçenGrantWeapon
fonksiyonunu ve oyuncu referansını çağır.OnPlayerSpawn
kodun aşağıdaki koda benzer şekilde görünmeli.OnPlayerSpawn(InPlayer : agent) : void= Print("A player just spawned!") WeaponTier : int = 0 GrantWeapon(option{InPlayer}, WeaponTier) Print("Spawned Player was granted a gun of tier {WeaponTier}")
-
Kodu Visual Studio Code’a kaydet, derle ve bölüme oynanış testi uygulamak için UEFN araç çubuğunda oturumu başlat (Launch Session) butonuna tıkla. Bölümüne oynanış testi uyguladığında
WeaponGranters
dizisindeki ilk silahla doğman gerekir. Günlüğe bakıp bu davranışı doğrula.
Sonraki Adım
Bu eğitimin bir sonraki bölümünde haritaları kullanarak oyuncuları nasıl izleyeceğini ve oyun başladığında bu haritaları nasıl dolduracağını öğreneceksin.