変数を利用するためには変数を宣言しなければなりません。型の宣言は要りませんが、スコープは強く意識する必要があります。
変数の宣言はスコープ(変数を参照できる範囲)で分けると三種類あります。YoYoGames のドキュメントでは
-
[column width=”60%” spacing=”4%”]
- ローカル変数(自動変数/局所変数)
- インスタンス変数
- グローバル変数(広域変数)
[/column]
[end-columns]
これら三つ、あとは最初から定義済みの Built-in variables があると説明されています。
Built-in variables は宣言不要の変数群です。
Built-in variables = 組み込み変数
Built-in variables はスコープで言うとオブジェクト・インスタンスが作成されたタイミングで自動的に付与されるインスタンス変数が数も多く、その他の一部がグローバル扱いです。
関連 ( Built-In 変数一覧 ):リファレンス
初歩的な注意点など
各変数は宣言によって確保されますが、リソースツリーに追加したリソースに付けた名前と重複した名前を変数に使うことはできません。また前述した built-in Variables で利用されている識別子は予約が入っているため、これらと同名の識別子を新たに宣言して使うことはできません。
筆者は実際に初心者の頃、リソースに追加したオブジェクト名を「 a 」にして、変数名にも「 a 」を使おうとしてエラーが出て、このエラーの原因が分かるまで三日くらい悩んでいました。
GML はユニコードに対応していますが、変数名に日本語が使えません。
開発言語によっては日本語変数名を使えるものもありますが、GM:Stuido は一つのソースコードで複数デバイスをターゲットにして出力するための統合開発環境なので、互換性のことを考えると変数名などに日本語が使えない方が安全だとは思います。
覚えるべき優先順位として
まずは一番良く使うであろうローカル変数に関する説明から見て行ってください。使い捨ての変数としてあらゆる場面で活躍します。変数型と動的型付けについては徐々に理解してください。GML では型よりもスコープのほうが最初は重要です。
次にインスタンス変数ですが、最初は理解できるまで時間かかるかもしれません。ドット記法も関連して来るためローカル変数よりも少しだけ高度になります。
グローバル変数は便利だけどあまり多用すべきではないため、一番最後で良い。
参考 (YoYoGames):Variable Scoping In GameMaker