Aşağıdaki bölümlerde oyuncunun kullanıcı arayüzüne bir widget’ın nasıl eklendiği ve buradan bir widget’ın nasıl kaldırıldığı gösteriliyor.
Bu örneklerde bir metin bloğu widget’ı kullanılsa da sen herhangi bir türde widget kullanabilirsin. Kullanabileceğin tüm widget türlerini görmek için Widget Türleri bölümüne bak.
Widget Ekleme
Bu örnekte, bir oyuncu bölümde bir Buton cihazıyla etkileşim kurduğunda nasıl widget ekleneceği gösterilir:
Yeni bir Verse cihazı oluştur ve bunu bölüme ekle. Verse’te yeni bir cihazın nasıl oluşturulacağını öğrenmek için Verse Kullanarak Kendi Cihazını Oluşturma kısmına bakabilirsin.
Visual Studio Code’da Verse Gezgini ile Verse dosyanı aç.
Verse cihazına düzenlenebilir bir Buton cihazı özelliği ekle ve bölümünde Buton cihazına verilen referansı ayarla. Düzenlenebilir özelliklerin nasıl oluşturulacağını öğrenmek için Cihaz Özelliklerini Özelleştirme bölümüne bakabilirsin.
# Editör’deki Buton cihazını bölümdeki cihaza başvuracak şekilde ayarla @editable MyButton : button_device = button_device{}Verse Kullanıcı Arayüzü API’ını kullanmak için Verse dosyanın en üstüne aşağıdaki satırları ekle:
using { /UnrealEngine.com/Temporary/UI } using { /Fortnite.com/UI } using { /UnrealEngine.com/Temporary/SpatialMath}Bu kullanıcı arayüzü yalnızca bir oyuncu içindir. Bu yüzden bir oyuncunun kullanıcı arayüzüne erişmek için o oyuncuya yönelik bir referansa ihtiyacın olacak. Bu örnek, oyuncu bir butonla etkileşim kurduğunda özel bir kullanıcı arayüzünün nasıl görüntüleneceğini gösterir çünkü cihazlara ilişkin olaylar, cihazla etkileşim kuran oyuncuya yönelik bir referans içerir. Olay aboneliklerinin nasıl kurulacağını öğrenmek için Cihaz Etkileşimlerinin Kodlanması bölümüne bakabilirsin.
# Cihaz, çalışmakta olan bir oyunda başlatıldığında çalışır OnBegin<override>()<suspends> : void = MyButton.InteractedWithEvent.Subscribe(HandleButtonInteraction) # Özel bir kullanıcı arayüzü yalnızca belirli bir oyuncuyla ilişkilendirilebilir ve bu arayüzü yalnızca o oyuncu görebilir HandleButtonInteraction(Agent : agent) : void = # Ekran kullanıcı arayüzüArtık bir if ifadesinde başarısız olabilir
GetPlayerUI[]fonksiyonu çağırarak oyuncunun kullanıcı arayüzüne yönelik bir referans alabilirsin.Verse# A custom UI can only be associated with a specific player, and only that player can see it HandleButtonInteraction(Agent : agent) : void = # Agents can be a player or AI, but you can only get the UI of a player # so you must cast the Agent, who interacted with the Button device, to the player type if (InPlayer := player[Agent], PlayerUI := GetPlayerUI[InPlayer]): # Display UIOyuncunun kullanıcı arayüzüne yönelik referansından sonra widget'ını da eklemek için
AddWidget()fonksiyonunu çağırabilirsin.localizesbelirleyicisine sahip TextForMyUI adlı bir mesaj oluştur ve bunu“Hello, world!”dizesiyle başlat.hello_world_device := class(creative_device): # Editördeki Buton cihazını bölümdeki cihaza referans verecek şekilde ayarla @editable MyButton : button_device = button_device{} # Kullanıcı arayüzünde metin olarak görüntülenecek yerelleştirilebilir bir mesaj TextForMyUI<localizes> : message = "Hello, world!"
Mesajtürü, metnin yerelleştirilebileceği anlamına gelmekte olup birmessagedeğişkenini başlatmak için kullandığın dize, mesaj için varsayılan metin ve dildir.Mesajtürü hakkında daha fazla bilgi edinmek için Verse Dili Hızlı Referansı bölümüne bakabilirsin.Ardından, varsayılan metin olarak
TextForMyUIile bir metin widget’ı oluştur ve bunu oyuncunun kullanıcı arayüzüne ekle.Verse# A custom UI can only be associated with a specific player, and only that player can see it HandleButtonInteraction(Agent : agent) : void = # Agents can be a player or AI, but you can only get the UI of a player # so you must cast the Agent, who interacted with the Button device, to the player type if (InPlayer := player[Agent], PlayerUI := GetPlayerUI[InPlayer]): MyUI : text_block = text_block{DefaultText := TextFOrMyUI} PlayerUI.AddWidget(MyUI)
Tam kod aşağıdaki gibidir:
Verseusing { /Fortnite.com/Devices } using { /Verse.org/Simulation } using { /UnrealEngine.com/Temporary/UI } using { /Fortnite.com/UI } using { /UnrealEngine.com/Temporary/SpatialMath} hello_world_device := class(creative_device): # Set the Button device in the Editor to reference the device in the level @editableVerse dosyanı kaydet ve Verse cihazını güncellemek için UEFN ana menüsünde Verse > Verse Kodu Oluştur seçeneğine tıkla.
Bölümünü bu Verse cihazı ile oynanış testine tabi tuttuğunda “Merhaba dünya!” metni, oyuncu Buton cihazıyla etkileşime geçtiğinde ekranın sol üst köşesinde görünür.
Widget Kaldırma
Bu örnek, oyuncu Buton cihazıyla tekrar etkileşime geçtiğinde kullanıcı arayüzünün oyuncunun ekranından nasıl kaldırılacağını gösterir:
Widget Ekleme bölümünde oluşturduğun Verse dosyasını aç.
Daha sonra oyuncu Buton ile tekrar etkileşime geçtiğinde widget'ı kaldırabilmek için, daha sonra referans verebilmek amacıyla widget’ı bir değişken içinde depolaman gerekir. Widget'lar yalnızca oyuncu başına gösterildiğinden doğru oyuncuya doğru widget’ı alabilmen için widget'ı depolaman ve görüntülendiği oyuncuyla ilişkilendirmen gerekecektir.
Anahtar olarak
playerkullananMaybeMyUIPerPlayeradlı bir harita değişkeni oluştur, harita içinde de widget değeri olarak isteğe bağlı bir metin bloku oluştur. (Bu örnekte bir metin bloğu widget'ı kullanıldığını ancak senin her türlü widget'ı kullanabileceğini unutma.)var MaybeMyUIPerPlayer : [player]?text_block = map{}Widget'ı oyuncunun kullanıcı arayüzüne eklediğinde widget'ını daha sonra ekrandan kaldırabilmen için
MaybeMyUIPerPlayerdeğişkeninde depola. Haritadaki bir elemana erişim, başarısız olabilir bir ifade olduğundan widget değerinin oyuncuya göre belirlenmesi,ififadesi gibi bir başarısızlık bağlamında çağrılmalıdır.Verse# A custom UI can only be associated with a specific player, and only that player can see it HandleButtonInteraction(Agent : agent) : void = # Agents can be a player or AI, but you can only get the UI of a player # so you must cast the Agent, who interacted with the Button device, to the player type if (InPlayer := player[Agent], PlayerUI := GetPlayerUI[InPlayer]): NewUI := text_block{DefaultText := TextForMyUI} PlayerUI.AddWidget(NewUI) if (set MaybeMyUIPerPlayer[InPlayer] = option{NewUI}) {}Şimdi, oyuncunun
MaybeMyUIPerPlayeriçinde gösterilen bir widget'ı olup olmadığını kontrol etmek için fonksiyonu güncelle. Oyuncunun widget’ı varsa widget’ı kaldır. Yoksa, oyuncunun görebilmesi için yeni bir widget oluştur.Verse# A custom UI can only be associated with a specific player, and only that player can see it HandleButtonInteraction(Agent : agent) : void = # Agents can be a player or AI, but you can only get the UI of a player # so you must cast the Agent, who interacted with the Button device, to the player type if (InPlayer := player[Agent], PlayerUI := GetPlayerUI[InPlayer]): if (MyUI := MaybeMyUIPerPlayer[InPlayer]?): PlayerUI.RemoveWidget(MyUI) if (set MaybeMyUIPerPlayer[InPlayer] = false) {} else: NewUI := text_block{DefaultText := TextForMyUI}Tam kod aşağıdaki gibidir:
Verseusing { /Fortnite.com/Devices } using { /Verse.org/Simulation } using { /UnrealEngine.com/Temporary/UI } using { /Fortnite.com/UI } using { /UnrealEngine.com/Temporary/SpatialMath} hello_world_device := class(creative_device): # Set the Button device in the Editor to reference the device in the level @editableVerse dosyanı kaydet ve Verse cihazını güncellemek için UEFN ana menüsünde Verse > Verse Kodu Oluştur seçeneğine tıkla.
Bölümünü bu Verse cihazı ile oynanış testine tabi tuttuğunda “Merhaba dünya!” metni, oyuncu Buton cihazıyla ilk etkileşime geçtiğinde ekranın sol üst köşesinde görünür. Oyuncu, Buton cihazıyla tekrar etkileşime geçtiğinde metin kaybolur.