Bu özellik deneysel aşamadadır, böylece deneyebilir, geribildirimde bulunabilir ve neler planladığımızı görebilirsin. Şu anda Listeleme kullanan bir projeyi yayınlayamazsın.
Deneysel aşamada oluşturulan öğeler için geriye dönük uyumluluğu garanti etmediğimizi lütfen unutma. Bu özelliklere yönelik API’ler değişime tabi olup kendi takdirimize bağlı olarak tüm deneysel özellikleri veya belirli işlevsellikleri kaldırabiliriz. Özellik ile çalışmaya başlamadan önce bilinen sorunlar listesine göz at.
inventory_component, Eşyalar için kapsayıcı olarak kullanılan bir Scene Graph bileşenidir. Varlığına bir bileşen ekleme hakkında bilgi için Varlıklar ve Bileşenlerle Çalışma kısmına bakabilirsin.
Varlıklar yalnızca item_component bileşenine sahip olduğunda eşya olarak kabul edilir. Varlıklar bu bileşen olmadan çantalara doğru bir şekilde eklenmezler ve aynı zamanda Özel Eşya ve Çantalar işlevselliği de bozulabilir.
Bir “eşyaya” yönelik referanslar,
item_componentiçeren bir varlığı ifade eder.“Çantalara” yönelik referanslar,
inventory_componentiçeren bir varlığı ifade eder.
Sınıf Açıklaması
inventory_component, eşyaların bulunduğu bir kapsayıcı olarak kullanılır. Çantaya eklenen eşyalar, inventory_component varlığının alt öğeleri olur. Çantalar, normal sahne grafiği hiyerarşisi işlevselliğiyle birlikte, kendilerini ve sahip oldukları eşyaları belirli özellikler ve metotlarla yönetebilir:
AddItem()veRemoveItem()kullanarak eşya ekle veya kaldır.Eşyaları almak için
GetItem()veFindItems()kullanılabilir. Fonksiyonları bul seçeneği tüm alt öğeleri döndürürkenFonksiyonları al seçeneği en yakın alt öğeye döndürür.Başka çantaları bulmaya yarayan
GetInventories()veFindInventories()işlevleri vardır.AddItemEventveRemoveItemEventgibi abone olunacak olaylar.GetEquippedItems()ekipman için,EquipItemEventveUnequipItemEventolayları ise onları izlemek için kullanılabilir.
inventory_component ile bir varlık; çanta veya sırt çantası, ganimet içeren bir sandık, hatta silah ve becerilerin bulunduğu bir karakter dizilimi olabilir.
Çantalar, hangi eşyaların farklı şekillerde eklendiğini veya kaldırıldığını kontrol eder. Sahne Olayları, faydalı bir metottur. AddItem() fonksiyonu çağrıldığında, bileşenler tarafından yanıtlanabilen bir sahne olayı yayınlanır. Sahne olayı bir bileşene ulaştığında, mantığı tetiklemek için geçersiz kılınabilecek OnReceive() olayı tetiklenir.
Özel Eşyalar ve Çantalar'a yönelik Deneysel sürümde eşya ekleme, kaldırma ve birleştirme işlemleri için başka bir kontrol metodu da bulunur. inventory_rule_interface türü için alt sınıf oluşturarak CanAdd(), CanRemove() ve CanMerge() için yeni geçersiz kılmalar yazılabilir. Bu kurallar, AddRule() kullanılarak InventoryRuleList listesine eklenebilir. Bu özelliğin Deneysel sürümden sonra kalıcı olmasının beklenmediğini lütfen unutma.
Bileşen, bileşen açılır listesinde inventory_component olarak yer alır. Daha fazla bilgi için
Verse API'sinde inventory_component API referansına göz atabilirsin.
Çantalar ve Scene Graph
Özel Eşyalar ve Çantalar sistemi, oyundan en iyi şekilde yararlanmak için anlaşılması gereken temel bir kurulum sunar.
Tüm oyuncular, Oyuncu Varlığı'na bağlı inventory_component içeren bir varlık olan Kök Çanta ile başlar. Bu Kök Çanta ayrıca birkaç fort_inventory_component alt çantasına sahiptir. Bunlar, Fortnite'ın işlevselliğini korumak için gereklidir. Bu bileşenlerle ilgili daha ayrıntılı bilgi için Fort Çanta Bileşeni kısmına bakabilirsin.
Scene Graph'ın çapraz gezinme metodu nedeniyle, varlık ağacında inventory_component içeren bir varlık aranırken Kök Çanta her zaman bulunan ilk Çanta olacaktır. Bu nedenle kök çanta, yeni çantalar eklemek için mantıklı bir hedeftir.
# Helper function that gets the first descendant inventory component from an agent.
# This will be the root inventory.
GetAgentInventory(Agent:agent)<decides><transacts>:inventory_component=
TargetInventory := (for (I : Agent.FindDescendantComponents(inventory_component)) { I })[0]Kök Çanta, Oyuncuya bağlıdır ve tüm alt çantalar ise Kök Çanta'ya bağlıdır. Yeni Çantalar, Kök Çanta'ya eklenmelidir, böylece diğer sistemlerin yalnızca bir Kök çanta bulması ve onunla arayüz oluşturması gerekir.
Örnek
Prefab Editörü'nde bir varlığa inventory_component eklemek, o varlığın bir Çanta olarak eşya saklamasına olanak tanır.
Aşağıdaki sandıkta bir inventory_component bulunur. Artık bileşende bulunan tüm işlevselliklerden yararlanabilir.
Ancak Özel Eşyalar ve Çantalar'dan en iyi şekilde yararlanmak için Verse kullanman gerekecek:
using { /Fortnite.com/Devices }
using { /Fortnite.com/Itemization }
using { /Verse.org/SceneGraph }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Itemization }
# This device will give an inventory to all players
# It will then make a dummy item and give it to the inventory.
inventory_giver_device := class(creative_device) :
Çantalara yönelik ortak gereksinim, içinde hangi eşyaların bulunabileceğine dair kurallar uygulamaktır. Aşağıda, özel bir inventory_component için kod bulunur ve bu kod
OnReceive() bileşen metodunu geçersiz kılar. Burada maksimum Çanta boyutu kuralı oluşturmak için kullanılmıştır:
# This custom inventory component overrides the OnReceive function.
# This will allow us to determine whether or not we want an entity with this inventory component, to receive items.
custom_inventory_component := class(inventory_component) :
# What is the maximum number of items allowed in this inventory?
@editable
MaximumItemSlots:int = 5
Çantaların oynanış örnekleri ve inventory_component bileşeninin nasıl kullanılacağı hakkında bilgi için Scene Graph ile Özel Eşyalar ve Çantalar bölümündeki eğitim materyallerine bakabilirsin.