Playmaker
PlayMaker は、非プログラマー向けに設計された、人気のあるUnity用のビジュアルスクリプトツールです。
Naninovel のすべての C# API がデフォルトで使用できる Bolt とは対照的に、PlayMaker ではアクションごとに特別な C# クラスを作成する必要があります。つまり、PlayMakerを使用する場合、エンジンAPIの限られたサブセットしか使用できません。Naninovel の API が変更されたとき、使用可能なカスタムアクションも壊れる可能性があります。
設定
公式マニュアル の指示に従ってPlayMakerをインストールします。
PlayMaker拡張パッケージ をダウンロードしてインポートします。
PlayMakerアクションブラウザの "Naninovel" カテゴリに、カスタム Naninovel アクションが表示されます。
使い方
次の動画は、PlayMaker FSM(有限状態マシン)を使用して Naninovel エンジンを初期化し、シナリオスクリプトをプリロードして再生する方法を紹介しています。
イベント
重要なNaninovelイベントのいくつかは、自動的に PlayMaker FSM にルーティングされます。そのためには、適切な名前でグローバル ユーザーイベント を作成し、FSM内で使用します。使用可能なイベント名は次のとおりです:
Naninovel/Engine/OnInitialized
Naninovel/ScriptPlayer/OnPlay
Naninovel/ScriptPlayer/OnStop
Naninovel/StateManager/OnGameSaveStarted
Naninovel/StateManager/OnGameSaveFinished
Naninovel/StateManager/OnGameLoadStarted
Naninovel/StateManager/OnGameLoadFinished
Naninovel/TextPrinterManager/OnPrintTextStarted
Naninovel/TextPrinterManager/OnPrintTextFinished
Naninovel/LocalizationManager/OnLocaleChanged
@playmaker
コマンドを使用して、naninovelスクリプトからカスタムPlayMakerイベントをブロードキャストすることもできます:
@playmaker EventName
— シーン上のアクティブなすべてのFSMから、グローバルユーザーイベント "EventName" を呼び出します。
このコマンドでは、fsm
および object
パラメーターを使用して、特定のFSMにイベントを送信することもできます。最初のパラメーターは、イベントを受信するFSM名を指定します。例:
@playmaker EventName fsm:Fsm1,Fsm2
— 上記は "Fsm1" と "Fsm2" という名前のFSMから、 "EventName" という名前のイベントを呼び出します。
object
パラメータが指定されている場合、イベントはFSMにのみ送信され、対応する名前を持つゲームオブジェクトに適用されます。例:
@playmaker EventName object:Obj1,Obj2
— "Obj1" と "Obj2" という名前のゲームオブジェクトに接続されているすべてのFSMから、イベント "EventName" を呼び出します
また fsm
パラメータと object
パラメータを組み合わせて、イベントを受け取るFSMをさらにフィルタリングすることもできます。
グローバル変数
Naninovelスクリプトから PlayMaker のグローバル変数にアクセスできます。拡張パッケージのカスタム 関数式 を使います:
GetPlayMakerGlobalVariable("variableName")
— "variableName"という名前の単純型(int、float、stringなど)の変数を取得しますGetPlayMakerGlobalArray("variableName", arrayIndex)
— "variableName"という名前の配列変数のインデックス "arrayIndex" に格納されている値を取得します
整数 "Score" と、bool配列のグローバルPlayMaker変数 "FinishedRoutes" がある場合、次のように Naninovel スクリプトで使用できます:
Felix: My score is {GetPlayMakerGlobalVariable("Score")}.
@if GetPlayMakerGlobalArray("FinishedRoutes",2)
Third route (second array index) is completed.
@else
Not yet.
@endif