Etkileşimli bileşenler, UEFN’deki temel oyuncu etkileşimlerini sadeleştirmek için tasarlanmış Scene Graph bileşenleridir.
Bu bileşenler, aracıların bileşenlerin bağlı olduğu varlık ile etkileşime girmesine olanak sağlar.
Etkileşim, aracının başlatmaya çalışması ve etkileşimin başarısı için sinyal alması ile tanımlanır. Buna örnek olarak kullanıcının bilgisayarda Etuşuna basması gösterilebilir. Bileşen, bir etkileşimin ne yapacağını dikte etmez, yalnızca etkileşimde bulunan aracı ile etkileşimli bileşen arasındaki iletişimi üstlenir.
Interactable_component
Interactable_component, oyunculara oyundaki bir obje ile etkileşime geçme olanağı verilmesinin temelini oluşturur.
Etkileşim genellikle bir oyuncu, bir objenin yanındaki etkileşim düğmesine bastığında gerçekleşir. Bu temel bileşen, bir oyun olayını tetiklemek için gereken minimum etkileşimi sağlar.
Interactable_component bileşeninin çalışması için bir mesh_component bileşenine bağlanması gerekir.
Verse kullanarak özel etkileşimler oluşturmak için bileşenin varsayılan davranışını geçersiz kılabilirsin. Daha ayrıntılı bilgi için interactable_component sınıf API’si referansını inceleyebilirsin.
Verse Sınıfı
Interactable_component sınıfı, bir etkileşim başlatabilir ve hem bileşen hem de onunla etkileşime giren her bir aracı için bekleme sürelerini yönetebilir.
# An interactable component allows an agent to start and succeed at an interaction.
# The functionality of what happens on success should be implemented by overriding the success event.
interactable_component<public> := class(component, enableable):
# Set the enable/disable for interaction of the component.
Enable<override>()<transacts> : void
Disable<override>()<transacts> : void
IsEnabled<override>()<decides><reads> : void
# Event fires when an interaction starts. Sends the interacting agent.
Örnekler
Bu ilk örnekte kullanıcı, durumu etkinden devre dışına çeviren bir örgü ile etkileşime girebilir. Varlık, bir bilgisayarın mesh_component bileşeninden ve özelleştirilmiş interactable_enable_component bileşeninden oluşur.
Interactable_enable_component için kullanılan kod aşağıdadır:
using { /Verse.org }
using { /Verse.org/SceneGraph }
using { /Verse.org/Simulation }
using { /Fortnite.com/Game }
# Allows a Enable/Disable state on the interactable_component
interactable_enableable_component<public> := class<final_super>(interactable_component):
# Default text to show on the UI
EnabledText<localizes> : message = "Enabled"
Bu ikinci örnekte etkileşim, fenerin içindeki ışığın açılmasını sağlar. Varlık, bir lamba örgü bileşeninden ve interactable_enableable_light_component bileşeninden oluşur.
Interactable_enable_light_component için kullanılan kod aşağıdadır:
using { /Verse.org }
using { /Verse.org/Native }
using { /Verse.org/SceneGraph }
using { /Verse.org/Simulation }
# Will turn on/off a light after interacting with the entity
interactable_enableable_light_component<public> := class<final_super>(interactable_enableable_component):
# Entity who has the light_component attached
@editable
Basic_interactable_component
Bu özellik Deneysel aşamada olduğundan deneyebilir, geri bildirimde bulunabilir ve neler planladığımızı görebilirsin. Deneysel aşamada oluşturulan öğeler için geriye dönük uyumluluğu garanti etmediğimizi, bu özelliklere yönelik API’lerin değişebileceğini ve kendi takdirimize bağlı olarak tüm Deneysel özellikleri veya belirli işlevleri kaldırabileceğimizi lütfen unutma. Bu özellik ile çalışmaya başlamadan önce bilinen sorunlar listesine göz at.
Basic_interactable_component bileşeni, etkileşim parametreleri üzerinde daha fazla kontrol sağlar.
Temel etkileşimli bileşen, etkileşimin başarılı olması için geçmesi gereken belirli bir süre belirlenmesine imkan verir ve aynı anda birden fazla etkileşime izin vererek potansiyel olarak bu alandaki karmaşıklığın üstesinden gelir.
Ayrıca her etkileşim arasında etkileşimde bulunan aracıya göre değişebilen bekleme süresini yönetmeye olanak sağlar.
Etkileşimler basic_interactable_component Verse sınıfıyla yönetilir.
Verse Sınıfı
# An interactable component with a composable feature set.
basic_interactable_component<public> := class(interactable_component):
# Cooldowns begin elapsing on successful interactions. A cooldown which applies for all attempts to interact on this component.
@editable
Cooldown<public> : ?interactable_cooldown = false
# Cooldowns begin elapsing on successful interactions. A cooldown which applies for future attempts to interact on this component by the agent which succeeded.
@editable
CooldownPerAgent<public> : ?interactable_cooldown_per_agent = false