前提としては、シナリオ上でEndScenarioかPauseScenarioコマンドを呼び出している間に使うというのが基本の形となっています。
任意のコマンドの途中でJumpScenarioを呼び出した場合、
次のようなプログラムが呼ばれ、今のシナリオが一区切りしてからシナリオジャンプする状態になります。
//すぐにジャンプせずに、ジャンプラベルを予約することで現在のシナリオの状態を保ったままジャンプする
ScenarioPlayer.MainThread.JumpManager.RegistoreLabel(label);
通常の改ページ待ちだけなのであれば、
>プログラムから入力処理を呼び出す
を参考にして、
UguiManagerのOnInput()を呼び出せば、入力処理をプログラムから呼び出せます。
改ページ以外に、複数の入力待ちがあったり、選択肢の入力待ちがあったり、エフェクトの終了待ちがある場合などは、
その待機入力も一度に行なったり、選択肢の入力待ちを解除したり、エフェクトの終了待ちを解除する必要がでてきます。
カスタム可能な待機処理もあるので、これら全てを吸収するような自動入力処理のようなプログラムはありません。
ただ、下記のプログラムが参考になるかもしれません。
エージング(ゲームを自動実行するテスト)のための簡易的なコードなのですが、コマンドに合わせて自動入力処理をするといったことをしています。
Utage/Scripts/ADV/Extra/AdvAgingTest.cs
(ただ、これはスキップ機能と組み合わせて使う前提なので、エフェクト待ちなどをスキップできるプログラムではありません)
現実的には、ある程度JumpScenarioを呼び出すタイミングを絞る必要があると思います。
ScenarioPlayer.MainThread.JumpManager.RegistoreLabel(label)をせずに、
即座に今のコマンドを中断してジャンプシナリオするような処理はありません。
仮に拡張してそれを実装したとしても、コマンドの途中で中途半端に中断してしまうことは意図しない動作となって、制御不能な不具合を生み出してしまう結果になるかと思います。
2025年7月1日火曜日 22:18:57 UTC+9 ダイス: