您当前的位置: 首页 > 

开发游戏的老王

暂无认证

  • 7浏览

    0关注

    803博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

开发游戏的老王 发布时间:2020-08-05 17:18:56 ,浏览量:7

文章目录
      • 4.X版 GDScript范例
      • 支持注解
      • 属性(Properties)的定义格式
      • await关键字代替yield
      • 加入super关键字
      • 去除了多级调用问题
      • 小结

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的主分支中,但是依然处于开发阶段。总的来说它的易用性和灵活性以及规范性都有了进一步的提升。

关注
打赏
1656935939
查看更多评论
立即登录/注册

微信扫码登录

0.1039s