–
変数
GDScriptで変数を宣言する際は、var キーワードを使用して以下のように記述します。
#暗黙的な型指定の宣言
var a #空の変数a(初期値:null)
var b = 10 #数値10で初期化された変数b
#データ型を指定した宣言
var c : Vector2 #「:」を使用してデータ型[Vector2]を指定した空の変数c
var d := Sprite2D.new() #dは宣言と同時に初期化を行っているため、:後の型表記を省略
静的変数
static キーワードで静的な変数を宣言することも可能です。
static var id = 100
ここでの静的変数とは、定義されたクラスで固有(=そのクラスのインスタンスで共用)となる変数のことです。
→静的変数を共用的な変数で定義することで、すべてのインスタンスへ同じ変更が反映できます。
例)
クラスAに静的変数「static var x = 10」が宣言され、クラスAからインスタンスA01,A02が生成されているとします。
この状態でクラスAのxに+1加算する処理を行った場合、インスタンスA01,A02のもつxの値はどちらも「11」となります。
Godotではスクリプト内に静的変数がある場合、他の参照が残っていない場合でも自動でアンロード(メモリ解放)がされなくなってしまいます。(GDScriptクラスはリソースのため、保持される)
そのため、@static_unload を使用して、すべての参照が失われた後に持続しないように設定します。(スクリプトがロードし直されると、静的変数はデフォルト値に戻ることに注意)
@static_unload #スクリプトのアンロード設定。(スクリプト先頭行に記述)
class_name <クラス名>
定数
定数とは、ゲームの実行中に変更できない(一定のデータとして保持・利用したいものに使う)値です。
GDScriptで、定数は const キーワードを用いて以下のように宣言します。
const A = 100
列挙型
列挙型は定数のリストのようなもので、enum キーワードと{}を用いて以下のように宣言できます。
(列挙型のメンバは初期化も可能ですが、省略すれば自動的に0からの値が順に割り当てられます)
enum TestData{DATA_A, DATA_B, DATA_C} #列挙型の宣言
print(TestData.DATA_A) #列挙型へのアクセス(出力は0)
print(TestData.DATA_B) #列挙型へのアクセス(出力は1)
print(TestData.DATA_C) #列挙型へのアクセス(出力は2)

GDScriptのスタイルガイドより、定数はCONSTANT_CASE、列挙型はPascalCaseで命名しています。(列挙型のメンバは定数扱い)
データ型
変数や定数を宣言する際に指定できるデータ型として、一部を抜粋して以下にまとめます。
基本となるデータ型
データ型 | 説明 |
---|---|
null | 情報を持たない空のデータ型 |
bool | 論理型。true または false の値を保持 |
int | 整数型。 |
float | 浮動小数点型。少数を含む実数を保持 |
String | 文字列型。(Unicode形式) |
StringName | 不変の文字列型。変更ができない代わりに比較等が高速であるため、検索や照合処理でString型より有利(文字列の”識別子”のようなイメージ) |
NodePath | ノードまたはノード プロパティへのパス。 |
Color | RGBA 形式で表される色データ型。 |
RID | リソースの識別子(=ResourceID)データ型。 |
Object | エンジン内の全クラスが継承する、基本となる型。=Godotオブジェクトの基盤 |
Signal | Godotにおける”シグナル”を格納するデータ型。 |
Callable | 関数を格納するデータ型。シグナルのコールバック処理等で有用。 |
ベクトル関連のデータ型
データ型 | 説明 |
---|---|
Vector2 , Vector2i | 2Dベクトル型。x , y のコンポーネントを持ち、配列としてアクセスることも可能。(Vector2i はコンポーネントが整数型のもの) |
Rect2 | 2D矩形型。 position , size , end(position+size) というフィールドを持つ。 |
Vector3 , Vector3i | 3Dベクトル型。x , y , z のコンポーネントを持ち、配列としてアクセスることも可能。(Vector3i はコンポーネントが整数型のもの) |
Transform2D | 2D 線形変換に使用される 2×3 行列 (2 行、3 列)型。 →平行移動、回転、スケーリングなどの変換の定義が可能。 |
Plane | 3D平面を表現するためのデータ型。法線ベクトルと距離で定義される。 |
Quaternion | 3D 回転を表現するためのデータ型。 |
AABB | 3Dオブジェクトや領域を囲むために使用される、平行な境界ボックスを表すデータ型。(AABB=Axis-Aligned Bounding Box) |
Basis | 3D 回転とスケーリングに使用される 3×3 行列型。 |
Transform3D | 3D 線形変換に使用される 3×4 行列 (3 行、4 列)型。Basisに原点を加えたもの。 |
コンテナ系のデータ型
データ型 | 説明 |
---|---|
Array | ・配列型。 ・宣言するときは、[]を使用。(例:var data = [10,20,30]) ・要素は 0 から始まる数値インデックス(※)によってアクセス ※負数は末尾から数えた要素 (-1 は最後の要素、-2 は最後から 2 番目など) 例) data[0]=10, data[1]=20 , data[2]=30 , data[-1]=30 |
PackedArray | ・単一のデータ型のみを受容する配列型。(大規模なデータ配列を扱うときに使用) ・各データ型ごとに専用のPacked<データ型>Arrayという型が存在(詳細は割愛) ・メモリの断片化に耐性が高い一方、速度は通常の配列より遅い傾向あり |
Dictionary | ・辞書型。キーと値のペアを保持。 ・宣言するときは、{}を使用し、”:”区切りでkey/valueを定義 例)var data = {“key_A” : 10, “key_B” : 20, “key_C” : 30} ・アクセスする際は、キー値を指定 例)data[“key_A”] = 10 |

配列・辞書型については以下の記事で詳しくまとめています。
リテラルと文字列の取り扱い
GDScriptで利用可能なリテラルは以下の通りです。
リテラル | 概要 |
---|---|
null | Null値 |
true / false | ブール値 |
0x , 0b | 16進数(0x), 2進数(0b) 例) 10進で「26」= 16進:0x1a , 2進:0b11010 |
r”” | 生の文字列(Raw Strings)。このリテラルで定義した文字列は、エスケープシーケンス(例: \n , \t , \\ など)を処理せずに、文字列のまま扱うことが可能。→正規表現やファイルパスなどを扱いたい場合に有用です。 |
&”” | StringName型での文字列定義 |
^”” | ノードパスの指定 |
文字列リテラル
文字列リテラル | 内容 |
---|---|
\n | 改行(改行) |
\t | 水平タブ文字 |
\r | キャリッジリターン |
\a | アラート (ビープ音/ベル) |
\b | バックスペース |
\f | フォームフィード改ページ |
\v | 垂直タブ文字 |
\" | 二重引用符 |
\' | 一重引用符 |
\\ | バックスラッシュ |
\uXXXX | UTF-16, Unicode コードポイント |
\UXXXXXX | UTF-32 Unicode コードポイント |
フォーマット文字列
GDScriptでは「フォーマット文字列」という、文字列に変数や式を埋め込む(=フォーマット)機能があります。ここでは、その基本的な使い方をまとめています
初めに、フォーマット文字列のポイントは大きく以下の内容になります。
- フォーマット文字列は、プレースホルダーを用いて文字列に変数や式を埋め込む機能
- プレースホルダーは「%」から始まり、埋め込むデータ型によって種類がある
- 埋め込みの基本は、<プレースホルダーを設定した文字列> % <埋め込みデータ>
※String.format() で指定も可能(辞書型や配列を扱いたい場合はこちらが便利)
基本的な使い方
以下は最も基本的な文字列(String : %s)型を埋め込む例です。
var base_string = "私の名前は「%s」です" # %s でstring型のプレースホルダーを設定
print(base_string % "ひらまめ") # % "<文字列>" で、文字列データを埋め込み
#複数の埋め込みがある場合
base_string = "私の名前は「%s」です(%s回目)" # 複数のプレースホルダーを設定
print(base_string % ["ひらまめ","2"]) # 複数の埋め込みの際は[](配列)で指定
# ↑の各print文出力結果は以下のようになります
# 私の名前は「ひらまめ」です
# 私の名前は「ひらまめ」です(2回目)
文字列への埋め込み(フォーマット)は、String.format()メソッドでも可能で、
プレースホルダーに「キー値」を、formatメソッドの引数にキーに対応する値を指定します。
var base_string = "私の名前は「{name}」です" # {name}でプレースホルダーを設定
print(base_string.format({"name":"ひらまめ"})) # format()で文字列データを埋め込み
#複数の埋め込みがある場合
base_string = "私の名前は「{name}」です({count}回目)" # 複数のプレースホルダーを設定
print(base_string.format({"name":"ひらまめ","count":"2"})) # 複数の埋め込みの際は[](配列)で指定
# ↑の各print文出力結果は以下のようになります
# 私の名前は「ひらまめ」です
# 私の名前は「ひらまめ」です(2回目)

↑の指定方法はどちらでも動作は同じですが、データベースやセーブファイルの情報など、辞書や配列データに類するものを扱う場合は、String.format()のほうが有用です。
形式指定子とプレースホルダー修飾子
プレースホルダーの設定時、データ型の指定に使用可能な形式指定子は以下の通りです。
形式指定子 | 対応するデータ型 |
---|---|
%s | 文字列データ(String型) |
%c | 1文字分の文字データ(c は characterから) |
%d | 10進整数データ |
%o | 8進整数データ |
%x , %X | x : 小文字 , X : 大文字 を含む16進整数データ。 |
%f | 10進数の実数データ |
%v | ベクトル型データ。(float または int でベクトルデータを指定) |
また、プレースホルダーには以下の修飾子が利用できます(記述は% と形式指定子の間)
修飾子 | 効果 |
---|---|
+ | ・数値指定子で付与すると、正の数値で「+」を出力する 例)print(“%+d” % 5) #+5 print(“%+d” % 0) #+0 print(“%+d” % -5) #-5 |
0 ~ 9 の整数 | ・パディング(出力する桁数)を指定する。 ・修飾子が0から始まる場合はfきスペースが「0」で埋められる 例)print(“%10d” % 12345) #「 12345」(10桁分のパディング) print(“%010d” % 12345) #「0000012345」(10桁分のパディング) |
. + <0~9の整数> | ・小数点以下のパディング(出力する桁数)を指定する。 例)print(“%5.2f” % 12345.5555) #「 123.56」 |
– | ・パディングの向きを右側に指定する。 例)print(“%-10d” % 12345) #「12345 」(10桁分のパディング) |
* | ・動的パディング(パディングの値をフォーマット時に指定できる)設定 →パディングのプレースホルダーのイメージ 例)print(“%*.*f” * [3,2,10.555]) #「 10.56」 |

フォーマットの指定方法は各修飾子やプレースホルダーの指定方法によって多岐にわたります。
公式ドキュメントでも用例がまとめられていますので、是非ご参照ください。(↓)
参考情報
この記事は、以下公式ドキュメント「GDScript」の内容を一部抜粋してまとめたものになります。
より詳細な内容は以下をご参照ください。
–
コメント