MEL合宿 -12日目-




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の後に書くことはできません。elseはなくてもOKです。

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は、最初に成立した部分だけ処理される!

それでは次回もお楽しみに!(`・ω・´)ゞ







Maya x Pythonの技術書
たっきゅんのガチンコツール開発部 Maya Python 101
(CG Pro Insights)

もっとMayaを便利に使いませんか!?実用性のあるツールを例にPythonが学べるように、がんばって執筆させていただきました!是非、この機会によろしくお願いいたします!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です