Godot Class
class_name キーワード
スクリプトファイル = 名無しクラス(デフォルト)
class_nameキーワードでスクリプトファイルに名前を付けてクラスにできる。
さらに、画像ファイルへのパスを続けて書くと、ファイルシステム上でのアイコンを指定できる。
code: new_class.py
# Saved as a file named 'character.gd'.
class_name Character
var health = 5
func print_health():
print(health)
func print_this_script_three_times():
print(get_script())
print(ResourceLoader.load("res://character.gd"))
print(Character)
プロパティ
メソッド
のみを含むことができる。
これらは、継承によって再利用できる。
Extends(継承)
code: extends.py
# Inherit/extend a globally available class.
extends SomeClass
# Inherit/extend a named class file.
extends "somefile.gd"
# Inherit/extend an inner class in another file.
extends "somefile.gd".SomeInnerClass
リソース
.gdファイルとして保存されたクラスは、resourceとして扱われる。
他のスクリプトからインスタンス化するには、load(), preload()メソッドを使う
class キーワード
クラス内で内部クラスを定義するためのキーワード
setget キーワード (private/public)
プロパティに setter / getter 関数を割り当てるためのキーワード
ちなみに、ローカルではこれらは適用されない。
主に、他のクラスからアクセスされたときに
readonly
writeonly
にするための構文
setgetで関数が割り当てられていないプロパティはprivateな変数になる。
(そもそも、メソッドがpublicなのがデフォルトなので、privateなプロパティに
publicなメソッドでインターフェースを用意するイメージ)
code: setget.py
var my_var setget my_var_set, my_var_get
func my_var_set(new_value):
my_var = new_value
func my_var_get():
return my_var # Getter must return a value.
setter と getterはどちらも省略できる。
code: omit.py
# Only a setter.
var my_var = 5 setget my_var_set
# Only a getter (note the comma).
var my_var = 5 setget ,my_var_get