If,ElseIf,Else,EndIf


シナリオシート内でif分岐を使って、一定範囲のコマンドを処理をさせたりさせなかったりします。

サンプル

リファレンス

Command 説明 Arg1 Arg2 Arg3 Arg4 Arg5 Arg6
If If文を開始 if判定の論理式
ElseIf ElseIf文を開始 if判定の論理式
Else Else文を開始
EndIf If文終了

If-ElseIf-Else-Endif

Ifで必ず始まり、EndIfで必ず終える必要があります。

Command Arg1 説明
If flag1
…任意のコマンド Ifの条件(falg1)がtrueだったら、実行される
…任意のコマンド コマンドは複数設定可能
ElseIf falg2
…任意のコマンド ElseIfの条件(falg2)がtrueだったら、実行される
…任意のコマンド コマンドは複数設定可能
Else
…任意のコマンド Ifの条件もElseIfの条件も満たされなかった場合、実行される
…任意のコマンド コマンドは複数設定可能
EndIf

このように、If系コマンドで囲んだコマンド郡の実行を条件分岐することができます。

if分岐は非推奨

if分岐は基本的には非推奨です。なぜなら

  • 既読ページか否か正確にとれない。
    シナリオラベルをまたぐ場合に使ってはいけない。 ifで PageCtrlを使ってはいけない。
  • if内でサブルーチンを使ってはいけない。

というわかりづらい制約があるため、不具合のもとなりがちだからです。
また、上記の書き方をしてしまっていても、インポート時にエラー出力もされません。

ifが絡むと、ページの区切りが不正確になるため、既読ページやPageCtrlで不具合が起きがちです。
シナリオを分岐する場合は、条件つきJumpを使っても同じことができるので、そちらを推奨します。
表示の切り替えなどには、if分岐のほうが書きやすいこともあるため、利便性のために用意してあります。
ただ、「同じシナリオでも服装を変えたりしたい」「ユーザー入力によってキャラの性別を変えたい」という場合は、Characterシート、TextureシートのConditionalを使うことを推奨します。

ifでPageCtrlを使ってはいけない

ifを跨いだ形でPageCtrlを使っていけません。ifの条件によってはテキストが正確に表示できなくなるほか、セーブ時のテキストなどにも不具合が生じます。
エラーが出るサンプル。