MEL合宿 -10日目-

MEL合宿 -10日目-は、いくつかある「制御構造」の「条件分岐」について見ていきたいと思います!∠( ゚д゚)/

条件分岐って?

ゲームで例えると、、、「HPが0になったらキャラクターを死んだ状態にする」「経験値が一定以上になったらLVアップする」といった、状況に応じて処理を分岐させることを「条件分岐」といいます!

条件は、「変数の数値が100以上の場合」「配列の数が0個の場合」「文字列がperspの場合」などといった「条件式」というものが成り立つかどうかで判断されます。判断は「yes」 か「 no」だけでです!曖昧な判断はありません!(´・ω・`)

MELでの条件分岐は、「if文」と「switch文」の2種類があります!まずは、if文からやってみたいと思いまーす(*´ω`*)b

if文

MELでのif文は、以下のように記述します。

if(条件式){
	条件が成立した場合の処理
}

条件が成立した場合に実行したいことを「{」から「}」の中に記述します。もし、条件式が成立しない場合は、無視されます!

if文を実際に試して見るために、新しいコマンドをいくつか使ってみましょう!

ls

コマンド「ls」は、シーンにあるオブジェクトの一覧を取得したりできますが、もっとも使うのはフラグ「sl」を併用したものです。

ls -sl」とすることで、Mayaで選択されたノードの一覧を取得することができるんです(*´ω`*)

size

コマンド「size」は、配列の要素数を調べることができます!「ls -sl」で取得した「Mayaで選択されたノードの一覧」は、文字列の配列なので要素の数=選択した数と考えることができます!配列の要素が0個の場合は、何も選択してないからエラーさせる!といった具合ですね!

error

コマンド「error」は、「print」のようにメッセージを表示させることができますが、背景の色が赤くなります。ツールを実行したらエラーしちゃったっという時によく見るアレです!

if文を使ってみる!

以下のコードをScript Editorに記述して、ノードを選択した状態で実行したり、何も選択しない状態で実行したりしてみましょう!

まずは、選択したノードの一覧を取得して、変数に代入します!

string $selection[] = `ls -sl`;

早速if文の登場です。sizeを使って配列の数を調べて0個であるか調べてみます。「~が~の場合」と調べたい場合は、「==」を使います。詳しくは後ほど!

string $selection[] = `ls -sl`;
if(`size $selection` == 0 ){
}
条件式でコマンドを使う場合も、「`(バッククオート)」で囲う必要があります!

続いて「error」を使って、選択した者がない場合、エラーメッセージを表示するようにします。「if文」の「{」「}」の中に書くようにしましょう!

string $selection[] = `ls -sl`;
if(`size $selection` == 0 ){
	error "Select the node and then execute it!";
}

何も選択しない状態で実行すると、以下のようになります!

条件式

if文の条件は、「条件式」と言われるものが成立するか、成立しないかで判断されます。条件式の評価は、boolean型(ブーリアン)と言われるもので表されます。成り立つものを1、成り立たないものを0で表します。他にも成り立つものを「true」「on」、成り立たないものを「false」「off」で表すこともできます。

比較演算子

~が~の場合」と調べたい場合は、「==」を使うと言いましたが、こういったデータを比較するために使うのが「比較演算子」というものです。同じか、違うか、大きいか、小さいかなどといった比較をして条件を作ります。

比較演算子 使い方 内容
== $a == $b $aと$bが同じ場合はtrue、それ以外はfalse
!= $a != $b $aと$bが同じでない場合はtrue、それ以外はfalse
< $a < $b $aが$bより小さい場合はtrue、それ以外はfalse
> $a > $b $aが$bより大きい場合はtrue、それ以外はfalse
<= $a <= $b $aが$b以下の場合はtrue、それ以外はfalse
>= $a >= $b $aが$b以上の場合はtrue、それ以外はfalse

論理演算子

~が~の場合 で! ~が~じゃない場合」と、複数の比較を組み合わせたい時に使うのが「論理演算子」というものです。Aの条件とBの条件が成り立つか、AかBのどちらかの条件が成り立つかといったものを作り、より複雑な条件を作れるようになります。

論理演算子 使い方 内容
&& $a == $b && $c == $d 左辺と右辺がどちらもtrueならtrue、それ以外はfalse
|| $a == $b || $c == $d 左辺と右辺がどちらかがtrueならtrue、それ以外はfalse(左辺と右辺どちらもtrueならtrue)
! ! $a ==$b 右辺がtrueならfalse、falseならtrue(trueとfalseを反転させる)

まとめ!

  • 状況に応じて処理を振り分けることを「条件分岐」という!
  • 条件分岐は、「if文」「switch文」でできる!
  • if文は、「条件式が成り立つ」か「成り立たないか」で分岐する!
  • 比較演算子」を使うと、値を比較することができる!
  • 論理演算子」を使うと、複数の比較をミックスして複雑な条件が作れるようになる!

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