カスタム アセットのプレビューを定義する

previews 拡張機能を使用して、Asset Preview で特定のタイプのアセットが選択されたときの Asset Browser パネルの動作方法を定義できます。プラグインを使用して Stingray に新しいタイプのリソースを追加した場合、エディタでの作業時に、プロジェクト内の同じタイプの異なるリソースを区別する視覚的フィードバックを得ることができる便利な方法です。

動作

Asset Preview は、エンジンのビューポートをホストするエディタ パネルです。このパネルとビューポートの基本的な外観と動作は事前設定されていますが、各 preview の拡張機能を、特定のタイプのリソースの動作専用に使用できます。preview 拡張機能は、これをリソース タイプとスクリプト モジュールを関連付けることで実行します。Asset Browser で指定したタイプのリソースが選択されると、エディタはこれらのモジュールをロードして、リソースが選択されている間これらを使用します。

以下を指定することができます。

サンプル

preview 拡張機能は、プラグイン設定、JavaScript モジュール、Lua モジュールがすべて連携するように設定する必要があるため、環境設定がやや難しい場合があります。幸いにも、標準の Stingray プラグインには、ユーザ独自のプラグインのモデルとして使用できるいくつかのサンプルが用意されています。

JavaScript プレビュー モジュールを作成する

preview 拡張機能に JavaScript モジュールを使用することを選択した場合、プラグインに必要な JavaScript preview 拡張機能の関数(たとえば、setup()clear()title() 関数など)に関係なく、モジュールはこれらを実装するオブジェクトを返す必要があります。

たとえば、次のようになります。

define([], function () {
    'use strict';

    var MyAssetBehavior = {
        setup: function (config, asset, viewportName, $scope) {
            // ... do setup tasks here...
        }
    };

    return MyAssetBehavior;
});

モジュールで定義できるすべての関数、およびエンジンが呼び出すときにこれらの関数に渡すパラメータの詳細については、core/js/extensions/preview-behaviors.js ファイル内のコメント、および preview 拡張機能が含まれている標準の Stingray プラグイン内のJavaScript のモジュールのコメントを参照してください。

Lua プレビュー モジュールを作成する

preview 拡張機能に Lua モジュールを使用することを選択した場合、モジュールは必要となる一連の関数を実装するオブジェクトを返す必要があります。asset_preview プラグインの asset_preview/preview-behaviors/preview-base.lua ファイルに、これらの関数すべての基本的な実装が含まれています。通常、ユーザ独自の Lua オブジェクトはこの基本的なインタフェースに基づいて、アセット タイプで必要となるビューポートとエンジンの動作方法をカスタマイズするために必要な関数のみを実装します。

たとえば、次のようになります。

local BasePreviewBehavior = require("preview_behaviors/preview-base")
local MyAssetPreviewBehavior = class(BasePreviewBehavior, MyAssetPreviewBehavior)

-- overrides BasePreviewBehavior.init(), calling the base implementation
function MyAssetPreviewBehavior:init (resource, asset_preview)
    BasePreviewBehavior.init(self, asset, asset_preview)

    -- ... do any custom Lua initialization here ...
end

-- ... reimplement other functions from the base here ...

return MyAssetPreviewBehavior

Lua の preview 拡張機能モジュールで使用できるすべての関数のリストについては、asset_preview/preview-behaviors/preview-base.lua ファイルで定義された基本的なインタフェースを参照してください。

JavaScript モジュールとは異なり、使用する Lua ファイルがプロジェクト コンテンツ内に存在しなければなりません。resources 拡張機能を使用して、このフォルダをプロジェクトの一部としてマウントすることが必要になる可能性があります。「プロジェクト コンテンツを拡張する」を参照してください。

環境設定

preview 拡張機能ごとに、次の環境設定パラメータが必要です。

extensions = {
    previews = [
        {
            type = "resource_type"
            name = "Resource Type"
            title = "Asset Preview Title"
            modules = ["my-resource-type-module.js" "my-resource-type-module.lua"]
            config = {
                enableViewportSettings = true
                viewportMenuEntries = {
                    Physics = true
                }
            }
        }
    ]
}

type

この preview 拡張機能に関連付けられるリソース タイプ(つまり、ファイル拡張子)です。ほとんどの Stingray リソース(.unit.material.texture など)にはプレビュー動作が既に組み込まれているため、通常、これはお使いのプラグインを使用して Stingray に追加する新しい種類のリソースとなります。必須。

name

アセット タイプの表示名です。必須。

title

Asset Browser で指定されたタイプのアセットが選択されると、Asset Preview に表示されるタイトルです。必須。

$project および $editor の動的文字列の他に、次の動的文字列を使用できます。

また、JavaScript モジュールで必要に応じてカスタム title() 関数を作成し、タイトルをより直接的にコントロールすることができます。

modules

Asset Browser で特定のタイプのアセットが選択されたときに、Asset Preview パネルとそのビューポートの動作を定義する、すべての JavaScript と Lua モジュールの配列です。これらのファイル名は、.stingray_plugin ファイルの位置に対応して指定する必要があります。必須。

Lua モジュールを含める場合、そのモジュールもエディタによって使用されるマウントしたリソース パスに存在する必要があることに注意してください。つまり、このモジュールは、プロジェクトのソース フォルダ、コア リソース フォルダ、またはこのプラグインに設定した resource 拡張機能で識別されるフォルダ(または標準の asset_preview プラグインなど、インストールされた別のプラグインによって設定されたフォルダ)内にある必要があります。Lua モジュールが上記のパスのいずれかに存在しない場合、エディタではこのモジュールをエンジンにロードすることができません。「プロジェクト コンテンツを拡張する」も参照してください。

config

Asset Browser のビューポートに設定できる設定の種類を定義するオブジェクトです。オプション。

エディタはこのファイルから次のキーを読み取ります。さらに、このオブジェクトは、modules 設定(存在する場合)に入力した JavaScript モジュールの setup() 関数に渡されるため、このオブジェクトにユーザ独自のキーを追加して、モジュールで読み取ることができます。

enableViewportSettings

Asset Preview に設定アイコン を表示するかどうかを決定します。この値を true に設定した場合、viewportMenuEntries オブジェクトを使用して、このメニューでどの設定がユーザに表示されるかを設定し、defaultViewportSettings オブジェクトを使用して、これらの設定の既定値を設定します。

viewportMenuEntries

ユーザがコントロールできるビューポートの設定を決定します。

これらの設定の一部は、ビューポート自体にある View メニューにあります。また、enableViewportSettingstrue に設定されている場合は、これらの設定の一部は設定メニュー にあります。

次の設定はすべてオプションです。これらを指定しない場合は、以下に示す既定値に応じて、各設定は表示また非表示になります。ユーザが変更できる状態になっている設定については、設定の既定値は、これらの既定の可視性設定の次に表示されている defaultViewportSettings オブジェクトによって設定される(設定の可視性ではない)ことに注意してください。

Grid

ビューポートの View > Grid のメニュー項目を表示または非表示にします。既定は true です。

Gizmos

ビューポートの View > Gizmos メニュー項目を表示または非表示にします。既定は true です。

PerfHud

ビューポートの View > Performance HUD メニュー項目を表示または非表示にします。既定は true です。

Meshes

ビューポートの View > Meshes メニュー項目を表示または非表示にします。既定は false です。

Bones

ビューポートの View > Bones メニュー項目を表示または非表示にします。既定は false です。

RootMotion

> Root Motion メニュー項目を表示または非表示にします。既定は false です。

FollowCamera

> Follow Camera メニュー項目を表示または非表示にします。既定は false です。

Physics

> Physics メニュー項目を表示または非表示にします。既定は false です。

Flow

> Flow メニュー項目を表示または非表示にします。既定は false です。

PlaybackRate

> Playback Rate メニュー項目を表示または非表示にします。既定は false です。

BoneSize

> Bone Size メニュー項目を表示または非表示にします。既定は false です。

ResetToggles

> Reset Toggles メニュー項目を表示または非表示にします。既定は true です。

defaultViewportSettings

上記の viewportMenuEntries セクションにリストされた設定の既定値を定義します。

このオブジェクトには環境設定自体の既定値のみが含まれますが、viewportMenuEntries はその設定の可視性のみを決定することに注意してください。たとえば、defaultViewportSettings.gizmoVisibility はビューポートにギズモが既定で表示されるかどうかをコントロールしますが、viewportMenuEntries.GizmoGizmos メニュー オプションがユーザに表示されるかどうかをコントロールします。

gridVisibility

ビューポートの View > Grid メニュー項目の既定の設定をコントロールします。true または false になる場合があります。

gizmoVisibility

ビューポートの View > Gizmos メニュー項目の既定の設定をコントロールします。true または false になる場合があります。

perfHudVisibility

ビューポート内でどのパフォーマンス HUD が有効にされるべきかを設定します。次の値を 1 つまたは複数含む配列が許可されます: artistaudiocullingfpsluamemorynetwork

showMesh

ビューポートの View > Meshes メニュー項目の既定の設定をコントロールします。true または false になる場合があります。

showSkeleton

ビューポートの View > Bones メニュー項目の既定の設定をコントロールします。true または false になる場合があります。

hasRootMotion

> Root Motion メニュー項目の既定の設定をコントロールします。true または false になる場合があります。

doesFollowCamera

> Follow Camera メニュー項目の既定の設定をコントロールします。true または false になる場合があります。

doesApplyPhysics

> Physics メニュー項目の既定の設定をコントロールします。true または false になる場合があります。

doesApplyFlow

> Flow メニュー項目の既定の設定をコントロールします。true または false になる場合があります。

playbackSpeed

> Playback Speed メニュー項目の既定の設定をコントロールします。この設定は、十進数で表されるパーセンテージです。たとえば、1 の値は 100%、0.8 の値は 80%、1.5 の値は 150% を示します。

skeletonBoneSize

> Bone Size メニュー項目の既定の設定をコントロールします。この設定は、十進数で表されるパーセンテージです。たとえば、1 の値は 100%、0.8 の値は 80%、1.5 の値は 150% を示します。

関連項目