Możesz uwidocznić swoje zasoby w UEFN dla Verse, aby móc z nich korzystać w kodzie Verse. Jest to tak zwane asset reflection i możesz go użyć do wstawienia obrazów do niestandardowego UI lub zastosowania siatek do niestandardowych rekwizytów.
Gdy uwidaczniasz zasób dla Verse, nazwa zasobu staje się identyfikatorem, symbolem kompilatora, którego możesz następnie użyć w kodzie Verse, a dostęp do zasobu można uzyskać z jego ścieżki Verse. Nazewnictwo zasobów powinno być zgodne z konwencjami i zasadami nazewnictwa dla identyfikatorów. Wszystkie zasoby, które są uwidocznione dla Verse, możesz zobaczyć w pliku Assets.digest.verse swojego projektu.
Aby plik Assets.digest.verse został wygenerowany, musisz mieć co najmniej jeden plik Verse w projekcie przed skompilowaniem kodu Verse.
Jeśli na przykład twoja tekstura ma nazwę MyTexture, pojawi się w pliku Assets.digest.verse jako MyTexture<scoped {MyProject}>:texture_2d = external {}.
Gdy umieścisz zasoby w podfolderach w folderze Zawartość projektu, nazwa podfolderu stanie się nazwą modułu Verse. Gdy na przykład tworzysz niestandardową siatkę o nazwie MySphere i znajduje się ona w podfolderze Meshes (Siatki) folderu Content (Zawartość) projektu, musisz zakwalifikować nazwę siatki z nazwą modułu (podfolderu) w kodzie, np. Meshes.MySphere.
Obecnie możesz uwidaczniać dla Verse następujące rodzaje zasobów:
Modele
Tekstury
Materiały
Systemy cząsteczkowe efektów graficznych Niagara
Z poniższych sekcji dowiesz się, jak skonfigurować każdy rodzaj zasobu, aby był dostępny w kodzie Verse.
Modele
Aby móc odwołać się do swoich siatek w kodzie Verse, musisz wykonać następujące czynności:
Modeluj siatkę w UEFN lub zaimportuj siatkę do projektu.
Zasoby, które importujesz z Fab muszą zostać dodane jako modyfikowalne zasoby Unreal Engine, aby pojawiły się w pliku Assets.digest.verse. Obecnie nie możesz używać odwołań do zasobów z Fab w kodzie Verse.
Zapisz siatkę, wybierając opcję Plik > Zapisz wszystko.
Sprawdź, czy nazwa siatki pojawia się w Assets.digest.verse projektu
Następnie możesz użyć siatki za pomocą interfejsów API Verse, np. ustawiając siatkę na rekwizycie trybu kreatywnego.
Poniższy przykład to urządzenie utworzone w Verse, które spawnuje rekwizyt po rozpoczęciu gry. W przykładzie użyto siatki o nazwie MySphere, która znajdowała się w podfolderze Siatki folderu Zawartość projektu.
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):
Tekstury
Aby móc odwołać się do swoich tekstur w kodzie Verse, musisz wykonać następujące czynności:
Zaimportuj teksturę do UEFN.
Zasoby, które importujesz z Fab muszą zostać dodane jako modyfikowalne zasoby Unreal Engine, aby pojawiły się w pliku Assets.digest.verse. Obecnie nie możesz używać odwołań do zasobów z Fab w kodzie Verse.
Zapisz teksturę, wybierając opcję Plik > Zapisz wszystko.
Sprawdź, czy nazwa tekstury pojawia się w pliku Assets.digest.verse projektu.
Następnie możesz użyć tekstury z interfejsami API Verse, takimi jak UI Verse.
Materiały
Aby móc odwołać się do swoich materiałów w kodzie Verse, musisz wykonać następujące czynności:
Utwórz swój materiał w UEFN.
Sprawdź, czy nazwa materiału pojawia się w pliku Assets.digest.verse projektu
Następnie możesz użyć materiału za pomocą interfejsów API Verse, takich jak UI Verse, i ustawić materiał na rekwizytach trybu kreatywnego.
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:
Parametry materiału
Przy tworzeniu materiałów i dodawaniu do nich parametrów, parametry te pojawiają się jako pola w klasie materiału w pliku Assets.digest.verse. Stosując taki materiał na siatce, możecie modyfikować parametry materiału za pomocą Verse.
Następujące typy parametrów z twojego materiału mogą być ujawnione w Verse:
| Parametry materiału | Typ Verse | Opis |
|---|---|---|
Pojedyncza wartość zmiennoprzecinkowa. | ||
Parametr umożliwiający dostęp do tekstury materiału i jej ustawienie. | ||
Struktura |
W poniższym przykładzie użyto materiału o nazwie ConcreteMaterial z parametrem vector4 o nazwie MyRandomColor.
Pojawi się to teraz w pliku Assets.digest.verse dla tego materiału:
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 {}Aby uzyskać dostęp do parametrów tego materiału i móc je aktualizować, musisz najpierw utworzyć instancję materiału w kodzie Verse. W poniższym przykładzie materiał jest instancjonowany i ustawiany na siatce przed modyfikacją parametrów.
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):
Zasoby efektów graficznych i systemy cząsteczkowe
Aby móc odwołać się do swojego systemu cząsteczkowych efektów graficznych Niagara w kodzie Verse, musisz wykonać następujące czynności:
Utwórz system cząsteczkowy w UEFN.
Sprawdź, czy nazwa systemu cząsteczkowego pojawia się w pliku Assets.digest.verse projektu
Następnie możesz zespawnować system cząsteczkowy za pomocą funkcji SpawnParticleSystem(). W poniższym przykładzie wykorzystano system cząsteczkowy o nazwie MyParticleSystem, który znajdował się w podfolderze VFX folderu Zawartość projektu.
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=
Znane ograniczenia
Poniżej wymieniono aktualne ograniczenia związane z odbijaniem zasobów:
Kiedy używasz
SetMeshna rekwizycie, materiał nowej siatki może nie pojawić się w rekwizycie, ponieważ niektóre rekwizyty w zestawie narzędzi trybu kreatywnego mają zdefiniowany materiał zastępujący. Jeśli rekwizyt nie ma materiału zastępującego, gdy zmienisz siatkę, użyty zostanie materiał nowej siatki.Nadanie zasobowi takiej samej nazwy jak innemu identyfikatorowi w twoim projekcie spowoduje błędy kompilacji. Na przykład projekt o strukturze pokazanej poniżej nie skompiluje się, ponieważ istnieje zasób o nazwie
MyMeshi folder o nazwieMyMesh. Aby kod mógł się skompilować, należy zmienić nazwę folderu lub zasobu.MyFolder /
MyMesh.uasset
MyMesh /
MyOtherMesh.uasset
Rozwiązywanie problemów
Jeśli napotykasz problemy z aktualizacją pliku Assets.digest.verse lub kompilacją kodu odbicia zasobów, wypróbuj poniższe rozwiązania.
Nie używaj słów kluczowych Verse, takich jak
setlubblock,jako nazw żadnych zasobów ani folderów. Plik Assets.digest.Verse tworzy identyfikatory Verse na podstawie tych nazw. Użycie słowa kluczowego jako identyfikatora Verse spowoduje błędy kompilacji. Listę słów kluczowych Verse znajdziesz w Skróconym przewodniku po języku Verse.Nie używaj nazw interfejsów API Verse lub elementów członkowskich API jako nazw zasobów lub folderów. Patrz: Verse Przewodnik po interfejsie API Verse.
Przestrzegaj konwencji nazewnictwa Verse podczas nazywania zasobów i folderów, w przeciwnym razie mogą one zostać pominięte podczas generowania pliku podsumowania.
Jeśli próbujesz odwołać się do zasobu poza jego modułem, możesz napotkać błąd dostępu. Dzieje się tak dlatego, że moduły domyślnie mają
<internal>specyfikator dostępu. Aby naprawić błąd, musisz dodać specyfikator dostępu<public>do deklaracji modułu. Jeśli moduł został określony poprzez utworzenie folderu w projekcie, musisz zmienić dostępność modułu w swoim kodzie. Na przykład w poniższej strukturze projektuMateriały,SiatkiiTeksturysą podmodułami modułuWatermelon.MyProject /
MiniGame /
MiniGameAssets /
Watermelon /
Materiały /
Siatki /
Watermelon.uasset
Tekstury /
hello_world_device.verse
Poniższy kod w pliku hello_world_device.verse zmienia dostępność modułu Siatki na publiczną.
MiniGame := module:
MiniGameAssets<public> := module:
Watermelon<public> := module:
Meshes<public> := module {}Teraz plik hello_world_device.verse projektu może zawierać odwołanie do Watermelon.uasset w kodzie, używając ścieżki MiniGame.MiniGameAssets.Watermelon.Meshes.Watermelon.
Jeśli identyfikator powoduje błąd w twoim kodzie Verse, prawdopodobnie spowoduje błąd jako nazwa zasobu lub folderu. Sprawdź potencjalne nazwy zasobów i folderów, wpisując je najpierw jako identyfikatory w kodzie.
Aktywacja odbijania zasobów
Wraz z wersją 26.00 możliwość uwidaczniania zasobów z UEFN do Verse jest domyślnie włączona dla wszystkich nowo utworzonych projektów UEFN. W przypadku projektów utworzonych w wersji starszej niż 26.00 musisz włączyć tę funkcję, wykonując poniższe czynności:
Zamknij swój projekt w UEFN.
Znajdź plik .uplugin w katalogu projektu.
Otwórz plik .uplugin w edytorze tekstu.
Znajdź właściwość EnableVerseAssetReflection i ustaw dla niej wartość true.
Jeśli nie ma takiej właściwości, dodaj następujący wiersz pod VersePath:
"EnableVerseAssetReflection" : true,Zapisz plik .uplugin.
Otwórz ponownie swój projekt w UEFN.