UEFN 内のアセットを Verse に公開すると、Verse のコードからアセットを使用できるようになります。 これはアセット リフレクションと呼ばれています。これにより、カスタム UI に画像を挿入したり、カスタムの小道具にメッシュを使用したりできます。
アセットを Verse に公開すると、アセットの名前が識別子、つまりコンパイラ シンボルになります。これにより、Verse コードでの使用と、Verse パスからアセットへのアクセスが可能となります。 アセットの命名は、識別子の命名規則とルールに従う必要があります。 Verse に公開されているすべてのアセットは、プロジェクトの「Assets.digest.verse」ファイルで確認できます。
「Assets.digest.verse」ファイルを生成するには、Verse コードをビルドする前にプロジェクトに少なくとも 1 つの Verse ファイルが必要です。
たとえば、テクスチャの名前が「MyTexture」の場合、「Assets.digest.verse」ファイルには「MyTexture<scoped {MyProject}>:texture_2d = external {}」として表示されます。
プロジェクトの「Content」フォルダ内のサブフォルダにアセットを配置すると、サブフォルダ名が Verse モジュールの名前になります。 たとえば、「MySphere」というカスタム メッシュを作成し、それがプロジェクトの「Content」フォルダのサブフォルダ「Meshes」内にある場合、コード内でメッシュの名前をモジュール (サブフォルダ) 名で修飾する必要があります (例:Meshes.MySphere)。
現在、次のタイプのアセットを Verse に公開できます。
メッシュ
テクスチャ
マテリアル
Niagara VFX パーティクル システム
次のセクションでは、Verse コードで使用できるように各種アセットを設定する方法について説明します。
メッシュ
Verse コードでメッシュを参照できるようにするには、次のことを行う必要があります。
UEFN でメッシュをモデル化するか、メッシュをプロジェクトにインポートします。
Fab からインポートしたアセットを「Assets.digest.verse」ファイルに表示するには、変更可能な Unreal Engine アセットとして追加する必要があります。 現在、Fab からの参照アセットを Verse コードで使用することはできません。
[File (ファイル)] > [Save All (すべて保存)] を選択してメッシュを保存します。
メッシュの名前がプロジェクトの「Assets.digest.verse」ファイルに表示されていることを確認します。
すると、クリエイティブの小道具にメッシュを設定するといったように、Verse API でメッシュを使用できるようになります。
次の例は、ゲームの開始時に小道具をスポーンする Verse で作成した仕掛けです。 この例では、プロジェクトのコンテンツ フォルダのサブフォルダ「Meshes」にある「MySphere」というメッシュを使用します。
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):
テクスチャ
Verse コードでテクスチャを参照できるようにするには、次のことを行う必要があります。
テクスチャを UEFN にインポートします。
Fab からインポートしたアセットを「Assets.digest.verse」ファイルに表示するには、変更可能な Unreal Engine アセットとして追加する必要があります。 現在、Fab からの参照アセットを Verse コードで使用することはできません。
[File (ファイル)] > [Save All (すべて保存)] を選択してテクスチャを保存します。
テクスチャの名前がプロジェクトの「Assets.digest.verse」ファイルに表示されていることを確認します。
すると、Verse UI など Verse API でテクスチャを使用できるようになります。
マテリアル
Verse コードでマテリアルを参照できるようにするには、次のことを行う必要があります。
UEFN でマテリアルを作成します。
マテリアルの名前がプロジェクトの「Assets.digest.verse」ファイルに表示されていることを確認します。
すると、Verse UI や、クリエイティブの小道具にマテリアルを設定するといったように、Verse API でマテリアルを使用できるようになります。
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:
マテリアルパラメータ
マテリアルを作成し、パラメータを追加すると、そのパラメータが「Assets.digest.verse」ファイルのマテリアル クラスのフィールドに表示されます。 マテリアルをメッシュに設定すると、ランタイム時に Verse でマテリアルのパラメータを変更できます。
マテリアルの次のパラメータ タイプを Verse で公開できます。
| マテリアルパラメータ | Verse の型 | 説明 |
|---|---|---|
単一の浮動小数点値。 | ||
マテリアルのテクスチャにアクセスして設定するためのパラメータ。 | ||
Verse の |
次の例では、MyRandomColor という名前の vector4 パラメータを持つ ConcreteMaterial という名前のマテリアルを使用します。
このマテリアルの「Assets.digest.verse」ファイルに、以下が表示されます。
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 {}このマテリアルのパラメータにアクセスして更新するには、まず Verse コードでマテリアルをインスタンス化する必要があります。 次の例では、パラメータが変更される前に、マテリアルがインスタンス化され、メッシュ上に設定されます。
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 アセットとパーティクル システム
Verse コードで Niagara VFX パーティクル システムを参照できるようにするには、次のことを行う必要があります。
UEFN でパーティクル システムを作成します。
パーティクル システムの名前がプロジェクトの「Assets.digest.verse」ファイルに表示されていることを確認します。
すると、SpawnParticleSystem() 関数を使ってパーティクル システムをスポーンさせることができます。 次の例では、プロジェクトのコンテンツ フォルダのサブフォルダ「VFX」にある「MyParticleSystem」というパーティクル システムを使用します。
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=
既知の制限事項
以下に、アセット リフレクションに関する現在の制限事項を示します。
小道具で
SetMeshを使用する場合、クリエイティブ ツールセットの一部の小道具にはオーバーライド マテリアルが定義されていることから、新しいメッシュのマテリアルが小道具に表示されない場合があります。 小道具にオーバーライド マテリアルがない場合、メッシュを変更すると、新しいメッシュのマテリアルが使用されます。アセットにプロジェクト内の別の識別子と同じ名前を付けるとコンパイル エラーが発生します。 たとえば、以下に示す構造のプロジェクトは、「
MyMesh」というアセットと「MyMesh」というフォルダが存在するため、コンパイルできません。 コードをコンパイルするには、フォルダまたはアセットの名前を変更する必要があります。MyFolder /
MyMesh.uasset
MyMesh /
MyOtherMesh.uasset
トラブルシューティング
「Assets.digest.verse」ファイルの更新またはアセット リフレクション コードのコンパイルで問題が発生した場合は、以下の修正を試してください。
setやblockなどの Verse キーワードをアセットまたはフォルダの名前として使用しないでください。 「Assets.digest.verse」ファイルは、これらの名前から Verse 識別子を作成します。 Verse 識別子としてキーワードを使用すると、コンパイル エラーが発生します。 Verse キーワードのリストについては、「Verse 言語のクイック リファレンス」を参照してください。Verse API または API メンバーの名前をアセットまたはフォルダの名前として使用しないでください。 「Verse API リファレンス」を参照してください。
アセットやフォルダに名前を付けるときは、Verse の命名規則に従ってください。そうしないと、ダイジェスト ファイルの生成でスキップされる可能性があります。
モジュール外のアセットを参照しようとすると、アクセス エラーが発生する可能性があります。 これは、モジュールにデフォルトで
<internal>アクセス指定子があるためです。 このエラーを修正するには、モジュール宣言に<public>アクセス指定子を追加する必要があります。 プロジェクト内にフォルダを作成してモジュールを指定した場合は、コード内のモジュールのアクセシビリティを変更する必要があります。 たとえば、次のプロジェクト構造では、Materials、Meshes、およびTexturesがWatermelonモジュールのサブモジュールとなっています。MyProject /
MiniGame /
MiniGameAssets /
Watermelon /
Materials /
Meshes /
Watermelon.uasset
Textures /
hello_world_device.verse
「hello_world_device.verse」の次のコードは、Meshes モジュールのアクセシビリティをパブリックに変更します。
MiniGame := module:
MiniGameAssets<public> := module:
Watermelon<public> := module:
Meshes<public> := module {}これで、プロジェクトの「hello_world_device.verse」ファイルは、MiniGame.MiniGameAssets.Watermelon.Meshes.Watermelon パスを使用してコード内の Watermelon.uasset を参照できるようになりました。
識別子によって Verse コード内でエラーが発生した場合、アセットまたはフォルダの名前としてもエラーが発生する可能性があります。 最初に使用したい名前をコードに識別子として入力して、それらがアセット名やフォルダ名として使用できるかどうかを確認してください。
アセット リフレクションを有効にする
26.00 のリリースでは、UEFN から Verse にアセットを公開する機能が、すべての新規作成された UEFN プロジェクトに対してデフォルトで有効になりました。 26.00 より前に作成されたプロジェクトでは、次の手順に従って、この機能を有効にする必要があります。
UEFN でプロジェクトを閉じます。
.uplugin ファイルをプロジェクトのディレクトリから見つけます。
.uplugin ファイルをテキスト エディタで開きます。
プロパティ EnableVerseAssetReflection を見つけて、これを true に設定します。
そのようなプロパティがない場合、次の行を VersePath パスの下に追加します。
"EnableVerseAssetReflection" : true,.uplugin ファイルを保存します。
UEFN でプロジェクトを再度開きます。