Verse Kumandası mini oyunu aşağıdaki kullanıcı arayüzü özelliklerine sahiptir:
Karakter Komutları: Bu düğmeler NPC komutlarıyla eşleşir (İleri, Sola Dön, Sağa Dön). Bu komutlardan biri seçtiğinde ekranın altındaki listeye eklenir.
Yürüt: Yürüt düğmesi, NPC’ye ekranın altındaki komut sırasını uygulamasını söyler.
Kaldır: Kaldır düğmesi, listeye eklenen son komutu kaldırır.
Sıfırla: Sıfırla düğmesi, geçerli oyun alanını sıfırlar ve komut kuyruğunu temizler.
Komut Listesi: Bir oyuncu komut eklediğinde büyüyen ve oyuncu komutları kaldırdığında küçülen dinamik bir komut listesidir.
Kullanıcı arayüzü tamamen Verse’te uygulanır. Verse kullanıcı arayüzünü kullanmaya başlamak ve nasıl çalıştığını anlamak için Oyun İçi Kullanıcı Arayüzleri Oluşturma bölümüne bakabilirsin.
Aşağıdaki bölümlerde bu oyunda kullanılan özel düğmelerin ve dinamik kullanıcı arayüzünün nasıl oluşturulacağı açıklanıyor.
Düğmeleri Oluşturma
Düğmeler, etkinleştirildiklerinde veya devre dışı bırakıldıklarında görünümlerini belirleyen kendi sınıfları olan minigame_button sınıfı içinde oluşturulur. Metin ve simge bulunan olan yatay bir yığın kutusunun, ardından da arka planın üzerine bildirilen bir sessiz düğme kullandık. Bu seçim, Fortnite’taki varsayılan düğme tasarımıyla elde edeceğin işlevselliği ve hassasiyeti korurken, düğmeler için özel bir görünüm etkisi sağlar.
SetEnabled() fonksiyonu, düğmenin etkileşimini ayarlar ve düğmenin etkinleştirilme durumuna göre kullanılan dokuları ve renkleri değiştirir.
# The class for storing all the widget references for a button and setting its look.
minigame_button := class:
# Store a reference of the overlay for easy removal later.
var Widget:overlay = overlay:
# Store a reference of the background texture widget to change easily later.
BackgroundImage:texture_block = texture_block:
DefaultImage := Textures.MiniGameUI.T_UI_Button_Blue_Rounded
DefaultDesiredSize := vector2{X := 256.0, Y := 128.0}
Komutları Ekrana Ekleme
Ekranın alt kısmındaki komut listesine ait her yuva, command_queue sınıfının bir örneğinde depolanır. Bu sınıf, yuvanın görünümünü işler ve onunla ilişkili tüm komut verilerini depolar.
Listede hiç komut olmasa bile her zaman liste görünümünün sol ve sağ uçlarını temsil eden iki yuva bulunur. Oyuncu tarafından yeni bir komut seçildiğinde sağ uç, komut simgesiyle güncellenir ve yeni bir sağ uç yuvası eklenir. Ardından, komut verileri temsili CommandData değişkeninde depolanır.
Oyuncu, kaldır düğmesini seçtiğinde, sağ uç widget’ı tuvalden kaldırılır ve son komut, sağ uç yuvası olarak değiştirilir. Artık bu yuvayla ilişkili bir komut olmadığından CommandData değişkeni false olarak ayarlanır.
# A class that stores the image (texture) that is used to represent a command in the queue on screen
# and the enum associated with that command.
command_queue := class:
# Store a reference of the overlay for easy removal later.
var Widget:overlay = overlay{}
# Store a reference of the background texture block to change the image easily later.
BackgroundImage:texture_block = texture_block:
DefaultImage := Textures.MiniGameUI.TransparentImage512
DefaultDesiredSize := vector2{X := 88.0, Y := 88.0}
Genel Kullanıcı Arayüzü Yönetimi
Kullanıcı arayüzü için kodun büyük kısmı verse_commander_minigame_ui sınıfındadır. Bu sınıf, her düğmenin görünümünü, benzersiz metnini ve simgelerini ayarlar, kullanıcı arayüzü dizilimini oluşturur ve komutlar eklendiğinde veya kaldırıldığında yapılan değişiklikleri işler.
Özel görseller, UEFN’den Verse’te kullanıma açılan dokulardır. Projede içe aktarılan dokuların erişim seviyesi submodules.verse dosyasında tanımlanır. Daha ayrıntılı bilgi için Öğeleri Verse’te Kullanıma Açma bölümüne bakabilirsin.
Bu kod, kullanıcı arayüzündeki her widget’ın pozisyonunu ve görünümünü belirtmek gerektiğinden diğer bazı dosyalardan daha uzun görünür. Davranışların çoğu yalnızca şu üç fonksiyonda bulunur: ResetCommandQueue(), Remove() ve AddCommandToDisplay().
# This file contains all the code to create and modify the UI
# in the Verse Commander minigame.
# The UI for the game contains:
# - Buttons that map to commands for the NPC: forward, turn left, turn right.
# - An execute button that tells the NPC to perform the queue of commands.
# - A remove button that removes the last command added.
# - A reset button that resets the current board and clears out the command queue.
# - A dynamic list of commands that grows wider when a player adds commands and shrinks when a player removes commands.
using { /Fortnite.com/Devices }
Sonraki Adım
Kullanıcı arayüzünü oluşturmak için gereken kodun tam listesini en sondaki 7. Nihai Sonuç adımında bulabilirsin.
Artık özel bir kullanıcı arayüzümüz olduğuna göre, bir sonraki adım oyunu ve oluşturduğun tüm parçaları nasıl yöneteceğini gösterecek.