节点结构
extends Node
func _ready():
$"node".speed = 6.0
print($"node".speed)
1. 子节点node.gd,未定义 setter和getter
extends Node
var speed: float = 5.0
输出结果
6
2. 子节点node.gd,定义 setter和getter
var speed: float = 5.0 setget set_speed,get_speed
func set_speed(s):
print("我是setter")
speed = s
func get_speed():
print("我是getter")
return speed
输出结果
我是setter
我是getter
6
3. 子节点node.gd,只定义getter
var speed: float = 5.0 setget ,get_speed
func get_speed():
print("我是getter")
return speed
输出结果
我是getter
6
4. 子节点node.gd,在setter中定义警告
extends Node
var speed: float = 5.0 setget set_speed,get_speed
func set_speed(s):
print("我是setter:但是我不允许set")
func get_speed():
print("我是getter:但是我不允许get")
输出结果
我是setter:但是我不允许set
我是getter:但是我不允许get
Null
小结 GDScript的setget
实际上就是一个字段访问行为的重定向,即:把赋值或者取值的行为重定到指定的函数,我之前误以为setget
是用来隐藏字段的