目次
・
トップ
・
「MaxScriptヘルプ」の見かた
・
コメントの記述
・
デバッグ用に変数の値などを表示したい
■MaxScript 基本文法
|
変数 |
演算子 |
文字列 |
配列 |
ループ |
条件分岐・エラー回避処理 |
関数(Function) |
変数
型(データ値)
解説とメモ
代表的な変数の型は下記の表の通りです。
下記のほか、interger、float、double などを扱える「Number値」(Number値クラス)や、true か false の真偽値を格納する「BooleanClass値」、
色を格納する「Color値」、3D行列変換用の「Matrix3値」など他のプログラミング言語ではみられない独特な値(クラス)があります。
C言語(C#)などでみられるlong型はありません。
型名 | 扱える値 |
integer | 整数 |
float | 32bit浮動小数点 |
double | 64bit浮動小数点 |
string | 文字列 |
変数に文字列を代入すると、自動的にstring型になります。
ヘルプ
[HELP] MAXScript 言語リファレンス > 条件 > 基本的なデータ値
[HELP] ヘルプ ファイル内の情報の検索 > クイック ナビゲーション - メイン インデックス > 値とコレクション - クイック ナビゲーション
型変換(キャスト)
解説とメモ
変数の型を変更することを、キャスト、キャスト変換などと呼びます。
例えば integer型の変数 i に 数値10 が代入されている状態で、「10」を数値ではなく文字列の"10"として扱いたい場合は、変数 i を文字列型に変換する必要があります。
変数の型を変換したい場合、as を使います。
基本的な書式
[変数名] as [変換したい型]
記述例
変数 i を文字列型に変換する。
i = i as string
ヘルプ
ヘルプでの記載を見つけられていません。
変数のスコープ(グローバル変数・ローカル変数)
グローバル変数
解説とメモ
グローバル変数とは、プログラム中のどこからでも使うことができる変数です。
プログラムは、複数の「関数」の集まりになっていることがほとんどです。プログラム内のどの関数からでも使うことができるのがグローバル変数です。
基本的な書式
global [変数名] = [代入したい値]
記述例
例1: global i
例2: global i = 0
例3: a = ::i global グローバル変数i の値を取得して変数aに代入
ローカル変数
解説とメモ
関数の中やループ中だけで有効になる変数を宣言するには、local を使用します。
local の記述が省略されている場合、自動的にローカル変数になります。
ただし、プログラムの先頭でローカル変数を宣言してしまうと「先頭行にローカル宣言がありません」というエラーになります。
基本的な書式
local [変数名] = [代入したい値]
記述例
例1: local i = 1 -- ローカル変数 i を定義して1を代入する
例2: local i = 1, a = 1 -- ローカル変数 iとa を同時に定義して値も代入する。
Max Scriptのサンプル
i = 10 -- 暗黙的にグローバル変数になる
for a = 1 to 3 do
(
i = 1 -- 暗黙的にローカル変数になる
a = 1 -- 暗黙的にローカル変数になる
)
◆
リスナーの表示結果
10
◆
解説
上記プログラムの実行後、リスナーには変数 i の値は10が表示されます。
続いて、リスナーに 「a」 と入力すると「undefined」と表示され、変数が宣言されていないことが分かります。
5行目で 変数 a が使用されていますが、ループ内で宣言された変数はループ内でのみ有効で、ループを抜けると無効になります。
for のループ内で宣言した変数 a は、2行目の「for a = 1 to 3 do」で使用している変数 a とは別の扱いになります。
◆
他のプログラム言語と異なる点
max scriptのfor文は、自動的に1ずつ加算されます。ループ中に a++; などと記述する必要はありません。
◆
明示的な変数宣言
上記のサンプルプログラムを「明示的な変数宣言」をした場合、下記のようになります。
Max Scriptのサンプル
global i = 10
for a = 1 to 3 do
(
local i = 1
local a = 1
)
ヘルプ
[HELP] MAXScript 言語リファレンス > 変数 - 代入およびスコープ
[HELP] MAXScript トレーニング > 独自のスクリプトの作成 > ローカルおよびグローバル変数
[HELP] よくある質問と回答 > MAXScript の構文と用語 > 変数のスコープとは何ですか。
永続グローバル変数
解説とメモ
通常のプログラミング言語では存在しない特殊な変数で、シーンを保存すると値も保存されるタイプの変数です。
maxを終了するまで値を保持しつづけており、「リセット」(※3ds Maxの画面左上のmaxのアイコンをクリックすると表示されるリセットの機能)を実行しても値が消えることはありません。
maxのヘルプやエラーメッセージでは「存続グローバル変数」と表記されている箇所がありますが、「永続グローバル変数」と同義と思われます。
基本的な書式
presistent global [変数名] = [値]
記述例
persistent global i = 52;
関連
persistent.show() | 保持している永続グローバル変数をリスナーに表示する。 |
persistent.remove | 指定した永続グローバル変数を削除。ただし変数と値はグローバル変数として残る。 |
persistent.removeall() | すべての永続グローバル変数を削除。ローカル変数、グローバル変数は残る。 |
ヘルプ
MAXScript 言語リファレンス > 変数 - 代入およびスコープ > グローバル変数と永続グローバル変数のメソッド > Persistents 構造体