知道类的成员变量何时因某种原因发生变化通常很有用。也可能需要以某种方式封装其访问。
为此,GDScript使用 setget
关键字提供了一个 setter/getter 语法。在变量定义后可直接使用:
var variable = value setget setterfunc, getterfunc
Whenever the value of variable
is modified by an external source (i.e. not from local usage in the class), the setter function (setterfunc
above) will be called. This happens before the value is changed. The setter must decide what to do with the new value. Vice versa, when variable
is accessed, the getter function (getterfunc
above) must return
the desired value. Below is an example:
var myvar 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 函数都可省略:
# Only a setter.
var my_var = 5 setget myvar_set # Only a getter (note the comma). var my_var = 5 setget ,myvar_get
在工具脚本或插件中, Get/Setters可将变量导出到编辑器,这可以用于验证输入。
如上所述, 本地 访问 不 需要触发setter和getter。 这里有个说明:
func _init():
# Does not trigger setter/getter.
my_integer = 5 print(my_integer) # Does trigger setter/getter. self.my_integer = 5 print(self.my_integer)