MEL合宿 -12日目-は、「MEL合宿 -10日目–」「MEL合宿 -11日目–」にやった「if文」に並列する条件を追加して、分岐を増やしていきたいと思います!(`・ω・´)ゞ
並列する条件を追加って?
前回までのif文で、「条件が成立したらこの処理、その他はこっちの処理!」っとしましたが、「ダイスの目が6なら成功、2~4ならもう一度、1なら失敗」としたいような時困ってしまいますね(´・ω・`)
if文をネストしまくったりすればできなくはないかもしれませんが、コードがぐっちゃぐっちゃになります、、、
こんな時便利なのが「else if」です!これ使うと、if文に複数の選択肢を作ることができます!
else if
MELでのelse ifは、以下のように記述します。
if(条件式A){ 条件Aが成立した場合の処理 }else if(条件式B){ 条件Bが成立した場合の処理 }else{ 条件が成立しなかった場合の処理 }
else ifは、何個でも書くことができます!ifから始まり上から順番に条件が成立するか見ていき、成立した箇所が実行されてます。
else ifを実際に試してみるために、新しいコマンドを使ってみましょう!
currentUnit
シーンの単位を調べたり変更したりできるコマンドです。今回は時間単位を調べるのに使用したいと思います。
else ifを使ってみる!
currentUnitを使って、時間単位の設定によってフレームレートのメッセージを表示させたいと思います!
っというのも、、、
「currentUnitのヘルプ」を見てみると、単位の設定は文字列で管理されていることがわかると思います。「時間の単位はfilmです!」と言われても意味ぷーさんなので、「24fpsです!」とわかりやすい感じにしたいと思います。
まずは、時間単位の設定を取得します。調べるには「-query(-q)」が必要なコマンドですね!
string $timeUnit = `currentUnit -q -time`;
次に、ヘルプを参考に時間の単位に対応した分岐を追加していきます!ちょっと全部対応するのは大変なので、主要なところだけやります!
戻り値 | FPS |
---|---|
film | 24 |
ntsc | 30 |
ntscf | 60 |
string $timeUnit = `currentUnit -q -time`; if($timeUnit == "film"){ }else if($timeUnit == "ntsc"){ }else if($timeUnit == "ntscf"){ }else{ }
次にそれぞれ対応したメッセージを表示するようにします!「else」は想定外の設定になるので、エラー表示にしてみます(゚∀゚)
string $timeUnit = `currentUnit -q -time`; if($timeUnit == "film"){ print "FPS is 24."; }else if($timeUnit == "ntsc"){ print "FPS is 30."; }else if($timeUnit == "ntscf"){ print "FPS is 60."; }else{ error "FPS is unknown."; }
こちらを実行してみると、設定されたFPSに応じてメッセージが変化します!

余力があったら、else ifを追加して他の設定に対応させてみましょう!(*´ω`*)b
実行されるのは1つだけ
一度条件が成立すると、他の条件が成立したとしても実行されません。以下のコードを見てみましょう!
int $value = 100; if($value >= 100 ){ print "Value is 100 or more."; }else if($value >= 50){ print "Value is 50 or more."; else if ($value >= 10){ print "Value is 10 or more."; }
変数「$value」は100なので、どの条件も成立するのにお気づきでしょうか!?こういう場合、どのメッセージが表示されるかきちんと理解してないと困っちゃいますね(´・ω・`)
if文は、必ず上から順番に条件が成立するか見ていきます。この場合は、最初の「$value >= 100」が成立するので「Value is 100 or more.」が表示されます。
さらに!
一度条件が成立すると、他の条件は処理されません!なので、「Value is 50 or more.」「Value is 10 or more.」は表示されません。
まとめ!
- if文に複数の選択肢を作りたい場合は「else if」を使う!
- else ifは、ifの後、elseの前に書く!
- if~else if~elseは、上から順番に処理される!
- if~else if~elseは、最初に成立した部分だけ処理される!
それでは次回もお楽しみに!(`・ω・´)ゞ