Eşya ve çanta sistemleri, birçok oyun türünün kritik bir parçasıdır. Scene Graph’ın varlıklarını ve bileşenlerini kullanarak Fortnite oyuncu çantasını özelleştirebilir ve adana özel eşyalar oluşturabilirsin.
Eşyalar, oyuncuların ve aracıların kullanabileceği ve sahip olabileceği objelerdir. Çantalar, mevcut Fortnite oyuncu çantasının yanı sıra inventory_component ile oluşturduğun tüm özel çantaları içerir. Özel Eşyalar ve Çantalar; eşyaları oluşturmak, kontrol etmek ve depolamak için kullanılan bir sistemdir. Bu sistem, Proje Ayarları’nda etkinleştirmen gereken deneysel bir özelliktir ve Fortnite İçin Unreal Editor’de (UEFN) Scene Graph ve Verse ile kullanılabilir.
Scene Graph’ın Temel Özellikleri
Scene Graph, Verse üzerine kurulu bir varlık ve bileşen sistemidir. Varlıklar, bileşenlerin kapsayıcılarıdır ve bileşenler bir varlığa işlevsellik kazandırır. Hiyerarşiler oluşturan bir üst-alt ilişkisi içinde varlıkları birbirine ekleyebilirsin. Varlıkların ve bileşenlerin yeniden kullanılabilir düzenine prefab denir.
Varlıklar ve bileşenler hakkında daha fazla bilgi için Varlıklar ve Bileşenlerle Çalışma kısmına bak. Prefablar hakkında daha fazla bilgi için Prefablar ve Prefab Örnekleri bölümüne bak.
Eşyalar
Eşyalar, Scene Graph’ta bir varlığın üzerine item_component yerleştirilerek oluşturulur. Çantalar, bileşeni bir obje gibi işler. item_component aşağıdaki gibi işlevsellikler sağlar:
Kuşanma ve çıkarma.
Karşılaştırma ve sıralama için adlandırılmış kategoriler.
Kullanışlı fonksiyonlar ve olaylar.
item_component kendi başına bir eşyaya sınırlı seçenekler sunar. Ek bileşenler, daha fazla işlevsellikle daha ilginç bir şey oluşturur.
Daha fazla bilgi için Eşya Bileşeni bölümüne bak.
Çantalar
Çantalar, eşyalara yönelik kapsayıcılardır ve bu eşyalara ne olacağını kontrol ederler. Çanta, inventory_component içeren bir varlıktır ve aşağıdaki şekillerde çalışır:
İçinde bulunan tüm eşyaları bilmek.
Hangi eşyaların çantaya girip çıkabileceğini yönetmek.
Gelen bir eşya, çantanın içindeki bir eşya ile birleşmek istediğinde ne olacağını belirlemek.
Bir eşya aynı anda yalnızca bir çantada bulunabileceğinden, çantalar eşya varlıklarının sahipliğini de belirler. Bir çantanın alt varlıkları yalnızca bir item_component bileşenine sahip olmaları durumunda çantanın içindeki eşyalar olarak kabul edilir, aksi takdirde alt varlıklardır.
Varsayılan olarak çantalar sonsuz sayıda ve çeşitte eşya barındırabilir. Verse ile eşya ekleme ve kaldırma işlemlerini etkileyen kısıtlamalar ve kurallar oluşturabilirsin. Örneğin:
Eşyaları bir çantaya yalnızca doğru kategoriye sahip olmaları durumunda ekle.
Bir çantadaki eşya sayısını sınırlama.
Son eşyanın çantadan kaldırılmasını engelle.
Çanta dolduğunda daha yüksek önceliğe sahip eşyaların daha düşük önceliğe sahip eşyaları çıkarmasına izin verme.
Bir çantayı tek bir eşyayla kısıtlama.
Çanta Ağaçları
Çantalar, Scene Graph hiyerarşisinde kendi altlarında bulunan çantaların farkındadır. Bu alt çantalar alt çanta olarak bilinir. Çanta ağacından birçok şekilde yararlanabilirsin.
Örneğin bir eşyayı üst çantaya ekleyebilirsin ve eşya buradan özelleştirilmiş bir alt çantaya geçebilir. Bunu, oyuncuya bir jeton vermek ve bu jetonu çanta sistemi aracılığıyla bir cüzdana (Oyuncu Çantası > Sırt Çantası > Para Kesesi Çantası) ulaştırmak olarak düşünebilirsin.
Daha gelişmiş çanta davranışları oluşturmak için Verse kodu yazmak gerekir.
Verse: Çantalar
Bir çantaya eşya eklemenin iki yolu vardır.
Bir eşyayı özellikle bir çantaya eklemek için
AddItem()fonksiyonunu çağırmak.AddItemDistribute()fonksiyonunu çağırmak ve çanta hiyerarşisini kullanarak en uygun çantayı veya alt çantayı bulmak.
AddItemDistribute() fonksiyonu çağrıldığında, hedeflenen çantaya ve tüm alt çantaları eşyayı değerlendirme ve talep etme fırsatı verilir. Her biri değerlendirildikten sonra en uygun çanta, eşyayı eklemeye çalışır.
Oyuncu Çantası Kökü
Oyuncuların varsayılan olarak bir çantası vardır. Buna Çanta Kökü denir. Diğer çantalardan farklı olarak oyuncunun Çanta Kökü eşya kabul edemez. Bunun yerine altındaki alt çantaların üst çantası olarak görev yapar. Bu özellik, AddItemDistribute() ile çanta kökünü hedeflemene ve başlangıçtaki hedef onu alamasa bile eşyanın uygun bir çanta bulmasına olanak tanır.
Bir oyuncunun eşya alabilmesi için çanta kökünün altında bir veya daha fazla alt çanta bulunması gerekir.
Yukarıdaki açıklama, Verse veya prefab editörü aracılığıyla eklenmiş bir inventory_component içeren varlıkları etkilemez.