UEFN’deki öğelerini Verse kodundan kullanabilmek için Verse’te kullanıma açabilirsin. Bu işleme öğe yansıtma adı verilir ve bu özelliği kullanarak özel kullanıcı arabirimine görüntüler ekleyebilir veya özel nesnelerin için örgüler kullanabilirsin.
Bir öğeyi Verse’te kullanıma açtığında öğenin adı daha sonra Verse kodunda kullanabileceğin bir derleyici sembolü biçimindeki tanımlayıcı olur. Bu öğene Verse yolundan erişebilirsin. Öğeler adlandırılırken tanımlayıcılara yönelik adlandırma gelenekleri ve kuralları kullanılmalıdır. Verse’te kullanıma açılan öğelerinin tümünü, projenin Assets.digest.verse dosyasında görebilirsin.
Assets.digest.verse dosyasının oluşturulması için, Verse kodunu oluşturmadan önce projende en az bir Verse dosyası olmalıdır.
Örneğin, dokunun adı MyTexture ise Assets.digest.verse dosyanda MyTexture<scoped {MyProject}>:texture_2d = external {} olarak görünür.
Öğelerini İçerik klasöründeki alt klasörlere yerleştirdiğinde Verse modülü ilgili alt klasörün adını alır. Örneğin, MySphere adlı özel bir örgü oluşturduğunda bu, projenin içerik klasöründeki örgüler alt klasöründe bulunuyorsa örgünün adını koddaki modül (alt klasör) adıyla (Meshes.MySphere gibi) nitelemen gerekir.
Şu anda aşağıdaki türdeki öğeleri Verse’te kullanıma açabilirsin:
Örgüler
Dokular
Materyaller
Niagara VFX Parçacık Sistemleri
Aşağıdaki bölümlerde, bu türlerdeki öğeleri Verse kodunda kullanılabilecek şekilde nasıl ayarlayacağın anlatılmaktadır.
Örgüler
Örgülerine Verse kodunda referans verebilmek için şunları yapman gerekir:
Örgünü UEFN’de modelle veya projene bir örgü aktar.
Fab’dan içe aktardığın öğelerin Assets.digest.verse dosyasında gösterilmesi için değiştirilebilir bir Unreal Engine öğesi olarak eklenmesi gerekir. Şu anda Fab’den referans verilen öğeleri Verse kodunda kullanamazsın.
Dosya > Tümünü Kaydet bölümünü seçerek örgüyü kaydet.
Örgünün adının, projenin Assets.digest.verse dosyasında göründüğünü doğrula.
Bundan sonra örgünü Verse API’larıyla kullanabilirsin. Örneğin, örgüyü bir Kreatif nesnesinde ayarlayabilirsin.
Aşağıda, oyun başladığında nesne üreten bir Verse ile yazılmış cihaz örneği verilmiştir. Örnekte, projenin içerik klasörünün örgüler alt klasöründe bulunan MySphere adlı bir örgü kullanılmaktadır.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Fortnite.com/UI }
using { /UnrealEngine.com/Temporary/UI }
using { /UnrealEngine.com/Temporary/SpatialMath }
# A Verse-authored creative device that spawns a prop and sets its mesh.
my_device := class(creative_device):
Dokular
Dokuna Verse kodunda referans verebilmek için şunları yapman gerekir:
Dokunu UEFN’e aktar.
Fab’dan içe aktardığın öğelerin Assets.digest.verse dosyasında gösterilmesi için değiştirilebilir bir Unreal Engine öğesi olarak eklenmesi gerekir. Şu anda Fab’den referans verilen öğeleri Verse kodunda kullanamazsın.
Dosya > Tümünü Kaydet bölümünü seçerek dokuyu kaydet.
Dokunun adının, projenin Assets.digest.verse dosyasında göründüğünü doğrula.
Bundan sonra dokunu Verse Kullanıcı Arayüzü gibi Verse API’leriyle kullanabilirsin.
Materyaller
Materyaline Verse kodunda referans verebilmek için şunları yapman gerekir:
UEFN’de materyalini oluştur.
Materyal adının, projenin Assets.digest.verse dosyasında göründüğünü doğrula.
Bundan sonra materyalini Verse API’leriyle kullanabilirsin. Örneğin, Verse Kullanıcı Arayüzü'nde kullanıp materyali kreatif nesneler üzerinde ayarlayabilirsin.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
my_device := class(creative_device):
# Runs when the device is started in a running game
OnBegin<override>()<suspends>:void=
SpawnLocation := transform:
Materyal Parametreleri
Bir materyal oluşturup ona parametreler eklediğinde, o parametreler Assets.digest.verse dosyasında materyal sınıflarındaki alanlar olarak görünür. Materyalinizi örgüye ekledikten sonra Verse çalışma zamanında materyalin parametrelerini düzenleyebilirsiniz.
Materyalinden aşağıdaki parametre türleri Verse'de açığa çıkarılabilir:
| Materyal Parametreleri | Verse Türü | Açıklama |
|---|---|---|
Tek bir kayan noktalı değer. | ||
Bir materyaldeki dokuya erişmek ve dokuyu ayarlamak için kullanılan parametre. | ||
Verse’teki |
Aşağıdaki örnekte MyRandomColor adında vector4 parametresine sahip ConcreteMaterial adında bir materyal kullanılmaktadır.
Bu materyal için Assets.digest.verse dosyasında şu görünür:
ConcreteMaterial_material<scoped {ParameterizedMaterialsTest}> := class<final><public>(material):
var Specular:float = external {}
var WorldPositionOffset:color = external {}
var BaseTexture:texture = external {}
ConcreteMaterial<scoped {ParameterizedMaterialsTest}>:material = external {}Bu materyal ile ilgili parametrelere erişebilmek ve bunları güncelleyebilmek için öncelikle Verse kodunda materyalini örneklendirmen gerekir. Aşağıdaki örnekte, materyal örneklendirilir ve ardından parametreler değiştirilmeden önce bir örgüde ayarlanır.
using { /Fortnite.com/Devices }
using { /Verse.org/Colors }
using { /Verse.org/Random }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /UnrealEngine.com/Temporary/SpatialMath }
# A Verse-authored creative device that spawns three props and randomly changes their color
material_color_test_device := class(creative_device):
VFX Öğeleri ve Parçacık Sistemleri
Verse kodunda Niagara VFX Görsel Efektler parçacık sistemine referans verebilmek için şunları yapman gerekir:
UEFN’de parçacık sistemini oluştur.
Parçacık sistemi adının, projenin Assets.digest.verse dosyasında göründüğünü doğrula.
Ardından SpawnParticleSystem() fonksiyonunu kullanarak parçacık sistemini üretebilirsin. Aşağıdaki örnekte, projenin içerik klasörünün VFX alt klasöründe bulunan MyParticleSystem adlı bir parçacık sistemi kullanılmaktadır.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Assets }
using { /UnrealEngine.com/Temporary/Diagnostics }
# A Verse-authored creative device that spawns a VFX particle system
vfx_test_device := class(creative_device):
# Runs when the device is started in a running game
OnBegin<override>()<suspends>:void=
Bilinen Kısıtlamalar
Öğe yansıtmanın bilinen kısıtlamaları aşağıda listelenmiştir:
Bir nesne üzerinde
SetMeshkullandığında, Kreatif araç setindeki bazı nesneler için tanımlanmış bir geçersiz kılma materyali olursa yeni örgünün materyali nesne üzerinde görünmeyebilir. Nesnenin geçersiz kılma materyali yoksa örgüyü değiştirdiğinde yeni örgünün materyali kullanılır.Bir öğeye projendeki başka bir tanımlayıcıyla aynı adı vermek derleme hatalarına neden olabilir. Örneğin, aşağıda gösterilen yapıya sahip proje,
MyMeshadlı bir öğe veMyMeshadlı bir klasör mevcut olduğundan derlenmeyecektir. Kodun derlenebilmesi için klasörün veya öğenin yeniden adlandırılması gerekir.MyFolder /
MyMesh.uasset
MyMesh /
MyOtherMesh.uasset
Sorun Giderme
Assets.digest.verse dosyanı güncelleme veya öğe yansıtma kodunu derlemeyle ilgili sorunlar yaşıyorsan aşağıdaki çözümleri dene.
set veya
blockgibi Verseanahtar sözcükleriniherhangi bir öğenin ya da klasörün adı olarak kullanma. Assets.digest.verse dosyası bu adlardan Verse tanımlayıcıları oluşturur. Bir anahtar sözcüğü Verse tanımlayıcısı olarak kullanmak derleme hatalarına neden olur. Verse anahtar sözcüklerinin listesi için Verse Dili Hızlı Referansı bölümüne bakabilirsin.Verse API’lerinin veya API üyelerinin adlarını öğe ya da klasör adı olarak kullanma. Verse API Referansı bölümüne bak.
Öğelerini ve klasörlerini adlandırırken Verse adlandırma kurallarına uymaman durumunda özet dosyası oluşturulurken bunlar atlanabilir.
Bir öğeye modülünün dışında referans vermeyi deniyorsan bir erişim hatası alabilirsin. Bunun nedeni, modüllerin varsayılan olarak
<internal>erişim belirleyicisine sahip olmasıdır. Hatayı düzeltmek için modül tanımına<public>erişim belirleyicisini eklemen gerekir. Modül, projende bir klasör oluşturularak belirtildiyse kodundaki modül erişilebilirliğini değiştirmen gerekir. Örneğin, aşağıdaki proje yapısındaMaterials,MeshesveTexturesdeğerleriWatermelonmodülünün alt modülleridir.MyProject /
MiniGame /
MiniGameAssets /
Watermelon /
Materials /
Meshes /
Watermelon.uasset
Textures /
hello_world_device.verse
hello_world_device.verse dosyasının aşağıdaki kodu Meshes modülünün erişilebilirliğini herkese açık olarak değiştirir.
MiniGame := module:
MiniGameAssets<public> := module:
Watermelon<public> := module:
Meshes<public> := module {}Artık projenin hello_world_device.verse dosyası MiniGame.MiniGameAssets.Watermelon.Meshes.Watermelon yolunu kullanarak kod içinde Watermelon.uasset dosyasına referans verebilir.
Bir tanımlayıcı, Verse kodunda hataya neden oluyorsa bunun nedeni muhtemelen bir öğe veya klasörün adıdır. Öncelikle olası öğe ve klasör adlarını koddaki tanımlayıcılar şeklinde yazarak kontrol et.
Öğe Yansıtmayı Etkinleştirme
26.00 sürümüyle birlikte tüm yeni oluşturulan UEFN projeleri için UEFN’deki öğeleri Verse’te kullanıma açma özelliği etkindir. 26.00 sürümü öncesinde oluşturulan projelerin için bu özelliği etkinleştirmek istersen aşağıdaki adımları izle:
UEFN’de projeni kapat.
Proje dizininde .uplugin dosyasını bul.
.uplugin dosyasını bir metin düzenleyicisinde aç.
EnableVerseAssetReflection özelliğini bul ve true olarak ayarla.
Böyle bir özellik yoksa VersePath altına aşağıdaki satırı ekle:
"EnableVerseAssetReflection" : true,.uplugin dosyasını kaydet.
Projeni UEFN’de tekrar aç.