17.Setters/getters

知道类的成员变量何时因某种原因发生变化通常很有用。也可能需要以某种方式封装其访问。

为此,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)
posted @ 2018-12-30 14:40  宸少凌  阅读(274)  评论(0编辑  收藏  举报

万年以来谁著史,三千里外欲封侯