float $counter
あるプロシージャでローカルな変数は、グローバル変数や他のプロシージャの変数と区別されます。ローカル変数は、プロシージャ内で同じ名前のグローバル変数よりもオーバーライドされます。
これにより、変数名が Maya や他のプロシージャとコンフリクトするかどうかを気にせずにプロシージャを作成することができます。
あるプロシージャで変数を作成し、それを維持しながら、プロシージャ外でも同じ変数を使用する必要がある場合は、この変数をグローバル変数として宣言することができます。例:
global float $counter;
$counter 変数は、最上位のすべての MEL コードと $counter をグローバルに宣言する他のプロシージャで読み込みや変更を行うことが可能です。また、グローバルな $counter 変数がすでに存在している場合、このプロシージャは新しい変数を作成せずにその変数を使用します。
以下は、グローバル変数を使用したコード例です。
次のコードは、myProcedure プロシージャで $globalText グローバル変数を使用しています。グローバル変数 globalText はプロシージャの外部で定義されています。
global string $globalText; global proc myProcedure() { global string $globalText; print($globalText); }
この例では MEL により、子ウィンドウを作成するために使用できるウィンドウが作成されます。グローバル変数 $chosenOne は、ユーザにより選択された子ウィンドウを追跡します。新しく作成される子ウィンドウそれぞれには、chooseMe ボタンがあります。このボタンをクリックすると、そのウィンドウは $chosenOne として設定されます。メインの親ウィンドウで Delete Chosen Window をクリックすると、$chosenOne が削除されます。
下の図では、window4 が $chosenOne で、Delete Chosen Window をクリックしたときに削除されます。
コードは次のようになります。
global proc int pressMe(string $thisOne) { global string $chosenOne; print ("was " + $chosenOne + "\n"); $chosenOne = $thisOne; print ("nowIs " + $chosenOne + "\n"); return 1; } ; global proc int satWindow(){ string $temp = `window -width 150`; button -label "Choose Me" -command ("pressMe " + $temp); showWindow; return 1; } global proc int baseWindow() { global string $chosenOne; window -width 150; columnLayout -adjustableColumn true; button -label "Make another Window" -command "satWindow"; button -label "Delete Chosen Window" -command "deleteUI -window $chosenOne"; showWindow; return 1; } baseWindow()