近日Godot发布了3.2.2 stable,而万众期待的4.0版本也预定于明年春季发布。虽然已经有4.0开发版可下载,但是还很不稳定。3.x到4.x一些程序接口被重构了,那么现在开始一个项目,到底是用3.x开发明年换了4.x再重构呢?还是忍着各种闪退的痛直接用4.x呢?
如果你能够灵活运用适配器模式,那么就可以在享受3.x稳定性的同时,提前用4.x开始你的项目了。其实就是在3.x项目中,通过适配器构造出一些4.x的接口,当移植入4.x后,修改或删除这些适配器,就可以(基本)平稳过渡了。
针对节点名称的改变
官网上说,3.x到4.x节点名称的变化很大,尤其是3D部分,为了命名更加统一,比如:
3.x | 4.x |
---|---|
Spatial |
Node3D |
Camera |
Camera3D |
CollisionShape |
CollisionShape3D |
… | … |
以
Spatial
的变化为例,我们可以先建一个“Adapters”文件夹,在里面新建一个
Node3D
类,它的代码也很简单。
extends Spatialclass_name Node3D
以后当我们想创建
Spatial
类型的节点,就直接创建
Node3D
,要添加脚本,也让我们的脚本直接继承
Node3D
就可以了。
等工程移植入4.x后将这个“Adapters”文件夹以及其中的代码删除即可。
一些事件绑定接口的变化
事件绑定接口也是一个比较大的变化,比如官网给出的下面这个例子:
我们可以新建一个名为
SignalConnector
的静态类,把绑定信号的工作都放在里面,例如
class_name SignalConnectorstatic func button_on_pressed(btn:Button,target:Node):btn.connect(\"pressed\",target,\"_on_button_pressed\")
这样当项目移植到4.x,我们只需要修改每个函数为下面的样子即可
class_name SignalConnectorstatic func button_on_pressed(btn:Button,target:Node):btn.pressed.connect(target._on_button_pressed)