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_gamesı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.OnPlayerSpawnkullanarak her bir oyuncunun çıkma yerine aitSpawnedEventolayına abone olmak için birfordö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
WeaponGrantersdizisindeki ilk eşya vericiye erişmen gerekir. Bunu yeni bir metotla yapman gerekecektir.team_elimination_gamesınıfına yeni birGrantWeaponyöntemi ekle. Bu yöntem biroptionaracısı alır ve belirtilenWeaponTierdeğerine göre oyuncuya bir silah atar.
GrantWeapon(InPlayer : ?agent, WeaponTier : int) : void= Print("Granting Player a weapon of Tier {WeaponTier}")GrantWeaponiçinde dizin olarakWeaponTierkullanarakWeaponGrantersdizisinden uygun eşya vericiye erişim sağla.InPlayeriçindeki değere erişipGrantedPlayerdeğişkeninde depola.
GrantWeapon(InPlayer : ?agent, WeaponTier : int) : void= Print("Granting Player a weapon of Tier {WeaponTier}") if(ItemGranter := WeaponGranters[WeaponTier], GrantedPlayer := InPlayer?):ItemGranter.GrantItemkullanarak oyuncuya uygun silahı ver.WeaponTierdeğerini günlüğe kaydederek hangi silahın verildiğini doğrulayabilirsin.GrantWeaponkodun 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) -
GrantWeaponfonksiyonunu çağırmak içinOnPlayerSpawndeğerini değiştir. Bir oyuncu doğduğunda birWeaponTiertamsayısını sıfırda başlatarakWeaponGrantersdizisindeki birinci eşya vericinin dizinini yansıt, ardındanWeaponTiernoktasını geçenGrantWeaponfonksiyonunu ve oyuncu referansını çağır.OnPlayerSpawnkodun 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
WeaponGrantersdizisindeki 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.