GDScriptエクスポート

エクスポートの導入

クラスメンバーはエクスポートできます。つまりそれらの値は、それらが関連付けられているリソース( scene など)と共に保存されます。プロパティエディタで編集することもできます。エクスポートは export キーワードを使用して行われます:

extends Button

export var number = 5 # Value will be saved and visible in the property editor.

エクスポートされた変数は、定数式で初期化するか、export キーワードの引数の形式でエクスポート・ヒントを持つ必要があります(下記の参照)。

メンバー変数をエクスポートする基本的な利点の1つは、エディタで表示および編集できることです。このようにして、アーティストやゲームデザイナーは後でプログラムの実行方法に影響する値を変更できます。このために特別なエクスポート構文が用意されています。

注釈

プロパティのエクスポートは C#のような別の言語でも実行できます。構文の違いは言語に依存します。

# If the exported value assigns a constant or constant expression,
# the type will be inferred and used in the editor.

export var number = 5

# Export can take a basic data type as an argument, which will be
# used in the editor.

export(int) var number

# Export can also take a resource type to use as a hint.

export(Texture) var character_face
export(PackedScene) var scene_file
# There are many resource types that can be used this way, try e.g.
# the following to list them:
export(Resource) var resource

# Integers and strings hint enumerated values.

# Editor will enumerate as 0, 1 and 2.
export(int, "Warrior", "Magician", "Thief") var character_class
# Editor will enumerate with string names.
export(String, "Rebecca", "Mary", "Leah") var character_name

# Named enum values

# Editor will enumerate as THING_1, THING_2, ANOTHER_THING.
enum NamedEnum {THING_1, THING_2, ANOTHER_THING = -1}
export(NamedEnum) var x

# Strings as paths

# String is a path to a file.
export(String, FILE) var f
# String is a path to a directory.
export(String, DIR) var f
# String is a path to a file, custom filter provided as hint.
export(String, FILE, "*.txt") var f

# Using paths in the global filesystem is also possible,
# but only in scripts in "tool" mode.

# String is a path to a PNG file in the global filesystem.
export(String, FILE, GLOBAL, "*.png") var tool_image
# String is a path to a directory in the global filesystem.
export(String, DIR, GLOBAL) var tool_dir

# The MULTILINE setting tells the editor to show a large input
# field for editing over multiple lines.
export(String, MULTILINE) var text

# Limiting editor input ranges

# Allow integer values from 0 to 20.
export(int, 20) var i
# Allow integer values from -10 to 20.
export(int, -10, 20) var j
# Allow floats from -10 to 20 and snap the value to multiples of 0.2.
export(float, -10, 20, 0.2) var k
# Allow values 'y = exp(x)' where 'y' varies between 100 and 1000
# while snapping to steps of 20. The editor will present a
# slider for easily editing the value.
export(float, EXP, 100, 1000, 20) var l

# Floats with easing hint

# Display a visual representation of the 'ease()' function
# when editing.
export(float, EASE) var transition_speed

# Colors

# Color given as red-green-blue value (alpha will always be 1).
export(Color, RGB) var col
# Color given as red-green-blue-alpha value.
export(Color, RGBA) var col

# Another node in the scene can be exported, too.

export(NodePath) var node

スクリプトがエディタで実行されていない場合でも、エクスポートされたプロパティはまだ編集可能です。これは script in "tool" mode と共に使うことが出来ます。

ビットフラグのエクスポート

ビットフラグとして使用される整数は、1つのプロパティに複数の true/false (ブール値)値を格納できます。エクスポートヒント int, FLAGS を使用して、エディタから設定できます:

# Individually edit the bits of an integer.
export(int, FLAGS) var spell_elements = ELEMENT_WIND | ELEMENT_WATER

フラグを特定の数の名前付きフラグに制限することもできます。構文は列挙構文に似ています:

# Set any of the given flags from the editor.
export(int, FLAGS, "Fire", "Water", "Earth", "Wind") var spell_elements = 0

この例では、 Fire の値は1、 Water の値は2、 Earth の値は4、 Wind は値8に対応します。通常、定数はそれに応じて定義する必要があります(例: const ELEMENT_WIND = 8 など)。

ビットフラグを使用するには、ビット単位の操作についてある程度理解する必要があります。疑わしい場合は、代わりにブール変数をエクスポートしてください。

配列のエクスポート

通常の配列はすべてのクラスインスタンスに対してローカルに作成されますが、エクスポートされた配列はすべてのインスタンス間で*共有* されます。つまり、1つのインスタンスで編集すると、他のすべてのインスタンスで変更されます。エクスポートされた配列は初期化子を持つことができますが、それらは定数式でなければなりません。

# Exported array, shared between all instances.
# Default value must be a constant expression.

export var a = [1, 2, 3]

# Exported arrays can specify type (using the same hints as before).

export(Array, int) var ints = [1,2,3]
export(Array, int, "Red", "Green", "Blue") var enums = [2, 1, 0]
export(Array, Array, float) var two_dimensional = [[1.0, 2.0], [3.0, 4.0]]

# You can omit the default value, but then it would be null if not assigned.

export(Array) var b
export(Array, PackedScene) var scenes

# Typed arrays also work, only initialized empty:

export var vector3s = PoolVector3Array()
export var strings = PoolStringArray()

# Regular array, created local for every instance.
# Default value can include run-time values, but can't
# be exported.

var c = [a, 2, 3]