名前は、MAXScript で変数、関数、パラメータ、およびプロパティなどの識別に使用されます。名前は、アルファベットまたは「_」(アンダースコア)で始まり、任意の英数文字または「_」を含むことができます。
以下の名前は無効です。
foo
bar123
this_is_a_very_long_identifier
_heresOneWithStudlyCaps
以下の名前は無効です。
1object
- 最初の文字がアルファベットではない。pressed?
- ? は有効な英数文字ではない。a big number
- 名前にスペースは使用できない。seven(7)
- 「(」および「)」は、有効な英数文字ではない。一般のプログラミング言語とは異なり、MAXScript の名前の大文字と小文字は区別されません。たとえば、MAXScript では、次の名前はすべて同じ変数です。
BitMapTexture
bitmaptexture
BITMAPtexture
構文の説明では、名前識別子は以下のように指定されます。
<var_name>
次に示すのは、名前識別子を指定する構文の例です。
for <var_name> ( in | = )<sequence> ( do | collect ) <expr>
この例では、<var_name>
が for
ループ変数を指定しています。
プログラムの中の名前は、常に変数またはパラメータの名前として解釈され、実際は、名前が使用される任意の式の変数またはパラメータの現在値を意味します。
次のスクリプトを例に考えてみます。
i=10 j=i+5 print j
このスクリプトでは、i
および j
が変数名です。最初の行では、変数 i
に値 10 が割り当てられます。2 行目では、変数 i
に保存されている値に値 5 が追加され、結果として変数 j
が保存されます。3 行目では、値 15 が出力され、これが変数 j
に保存される値です。
MAXScript では、ランタイム時に名前を数や文字列のように値として扱うこともできます。MAXScript で名前値を指定するには、次に示すように名前の前に「#」を付けます。
#<var_name>
構文の説明では、名前値は以下のように指定されます。
<name>
名前値は、主に関数の呼び出しにおいてシンボリック引数として使用されます。特に、多くのビルトイン関数では、名前値がこのように使用されます。シンボリック引数に指定できる値は関数によって定義され、関数と一緒に記述されます。
たとえば、setBeforeORT()
関数について考えてみます。構文を次に示します。
setBeforeORT <controller> <ORT_type_name>
最初のキーより前の時間に対するコントローラの範囲外型(ORT)を設定します。<ORT_type_name>
は、以下のような名前値のいずれかです。
#constant #cycle #loop #pingPong #linear #relativeRepeat
この関数は、たとえば次のように使用できます。
setBeforeORT $box01.position.controller #pingPong
名前の値は、コレクションでインデックスとして使用することもできます。
例:
ModifierArray のインデックスには、次のように整数、名前、または文字列を使用できます。
-- access modifier on object loft01 called Optimize: $loft01.modifiers[#Optimize]
引用符で囲まれた名前
単一引用符で囲まれた名前を使用すると、スペースやその他の区切り記号など、単一引用符で囲まなければ名前として不正な識別子になる文字を指定することができます。このような名前は、主に、名前に特殊文字を含む 3ds Max オブジェクト クラスやプロパティを指定するために使用されます。
形式は次のとおりです。
'<any_char_except_quote>' -- for an identifier or property name
#'<any_char_except_quote>' -- for a name literal
'<any_char_except_quote>': -- for a keyword parameter label
例:
snow 'starttime(start)':5 b.'lifetime(life)' $box01.modifiers[#'FFD 4x4x4']
名前内のスペース
3ds Max の名前にはスペースを含むものが多いため、名前にスペースを入れる代わりにアンダースコア文字「_
」を使用することができます。
次の例は、上記の例の最後の行と同等です。
$box01.modifiers[#FFD_4x4x4]