ココで宣言した変数がどうなっているか意識していない人が意外と多いのでは?
たとえば、スクリプトエディタで変数宣言をし、

グローバル変数の名前を返すenvコマンドを実行してみると、

宣言した変数が出てきます。

要は、スクリプトエディタで宣言した変数はグローバル宣言しなくてもグローバル変数になってしまうということです。
※プロシージャも同様。
スクリプトエディタを何回も実行する場合、初期化していないと意図しない結果になる場合があります。
コレを防ぐには、毎回初期化するか、MELの変数の寿命はブロックの範囲内ということで、波括弧で囲うことをします。
mayaを再起動して、さっきのスクリプトを波括弧で囲んでから実行。

その後envコマンドを実行してみると、

今回は宣言した変数が出てきません。
ただし配列の場合、特殊な挙動(参照渡し)をするので、コマンドのリザルトを宣言と同時に設定しないときには、
使う前に clear した方が安全です。
0 件のコメント:
コメントを投稿