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の条件によってはテキストが正確に表示できなくなるほか、セーブ時のテキストなどにも不具合が生じます。
エラーが出るサンプル。