Godot Engine:GDScript 4.X中语法的变化(2020年8月4日 更新)

4.X版 GDScript范例

在这里插入图片描述

支持注解

从4.x开始,GDScript将支持类似JAVA一样的注解机制,同时3.X时期存在的一些关键字将改用注解的方式。比如比较常用的export关键字,它会由一系列的注解来代替,比如用上面范例中的@export_range实现限定变量范围。并且,从4.x彻底不需要用类似export(int)的形式声明类型了,系统会从冒号后面的类型直符接识别其类型,比如@export var my_number: int

另外,以后为一个类声明类名后,想给它加个图标的话,可以直接用@icon@的引入使注解类代码和逻辑代码更清晰的区分开,同时GDScript也更加规范了。

属性(Properties)的定义格式

属性机制本质上是个语法糖,但实话说老版本GDScript中属性的定义比较麻烦且不美观,所以老王几乎很少定义属性。4.x后的属性直接借鉴了C#格式。这样就方便且美观多了。

var _hp:int
var hp:
	get:
		return _hp
	set(value):
		_hp = value

await关键字代替yield

老王之前写过几篇文章介绍GDScript的协程:
《GDScript:协程(Coroutine)(一)概念和使用范例》
《GDScript:协程(Coroutine)(二)简单粗暴实用至上的语法设计》
《Godot Engine:实用技巧之yield(owner, “ready”)》

新的await代替yield以后,语法也更加清晰了,比如:

await $Button.button_down

加入super关键字

以前要调用基类成员使用的是.,在4.x版本中加入了super关键字,并且提供了两种用法:

  • 在重写方法中调用基类同名方法
func _ready():
	super()
	dosometing...
  • 调用基类非同名方法
	super.function_name()

去除了多级调用问题

这个问题老王在《GDScript:关于派生类调用基类方法的一个注意事项》中也写过,确实是个容易产生歧义或误用的地方。在4.x中除非显式使用super关键字,否则基类的同名方法将不会被调用(尤其对于类似_process以及_ready这样的默认方法)

小结

目前新的GDScript已经合并入了4.x的主分支中,但是依然处于开发阶段。总的来说它的易用性和灵活性以及规范性都有了进一步的提升。

扫描二维码关注公众号,回复: 11654722 查看本文章

猜你喜欢

转载自blog.csdn.net/hello_tute/article/details/107818889