演出用スレッド
投稿日:2016年12月13日 | 最終更新日:2024年5月14日
テキスト表示と非同期に動作する演出用のスレッドを呼び出します。
サンプル
リファレンス
Command | 説明 | Arg1 | Arg2 | Arg3 | Arg4 | Arg5 | Arg6 | WaitType |
---|---|---|---|---|---|---|---|---|
Thread | 指定したスレッドを呼び出す | スレッドのシナリオラベル | ||||||
WaitThread | 指定したスレッドの終了待ちをする | スレッドのシナリオラベル | 入力によってキャンセルするかのTRUE/FALSEキャンセルした場合、スレッドは強制終了となる空欄の場合、FALSE |
スレッドのサンプル
スレッドの呼び出し先はTweenなどのエフェクト系のコマンドのみを使ってください。
テキスト表示やメッセージウィンドウ操作などの、ページ操作系のコマンドは使ってはいけません。
スレッドの開始ラベルと終了
呼び出し先のスレッドの開始ラベルは、通常通りシナリオラベルを
終了には「EndThred」と記述してください。
ページをまたいだ演出
スレッドがページをまたいで継続するのは基本的には仕様外です。
これはセーブデータは演出の途中から再開できないからです。
なので、セーブデータを使わない場合は、自由に使ってください。
ページをまたいだ演出をセーブ可能にする
セーブと併用する場合は、不完全ながらある程度の対応が可能です。
セーブデータ読み込み後、スレッドを最初から再開できるように
AdvSaveManagerの「Restart Sub Thread」をオンにしてください。
セーブ時に動いていたサブスレッドは、そのセーブデータをロードしたときに、もう一度最初からスレッドが動きます。
ただし、スレッドによって操作していたオブジェクトはセーブした時点(そのページの冒頭)の中途半端な状態でセーブされています。
これは、各オブジェクトの状態が演出スレッドによって操作されているのかそうではないのかの区別ができないためです。
セーブ時点(そのページの冒頭)でTweenなどのアニメーションで位置を動かしていたなら、中途半端な位置でロードされ、そこからスレッドが冒頭から再開されてしまいます。
なので、スレッド冒頭でLayerOffなどをしてそのスレッドで操作対象となるオブジェクトをクリアするなどしていったん初期化するように演出を組み込んでください。
オブジェクトを消すのが難しい場合でも、演出スレッドで位置を動かすだけのであれば、位置を初期値に戻すなどでもよいです。
要はロードされた中途半端な状態のオブジェクトをいったん元に戻せるようにして、再開後重複して演出されないように使ってみて下さい。
あまり簡単なやり方ではない上にエラーチェックもできないので非推奨ですが、ページをまたぐ演出が必要な場合は挑戦してみてください。