GDScript:Setter和Getter(一)基本语法

节点结构

在这里插入图片描述

misc_scene.gd
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是用来隐藏字段的

发布了261 篇原创文章 · 获赞 134 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/hello_tute/article/details/103790661
今日推荐