Godot Engine:巧用适配器模式让你提前进入4.x时代

近日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 Spatial
class_name Node3D

以后当我们想创建Spatial类型的节点,就直接创建Node3D,要添加脚本,也让我们的脚本直接继承Node3D就可以了。

等工程移植入4.x后将这个“Adapters”文件夹以及其中的代码删除即可。

一些事件绑定接口的变化

事件绑定接口也是一个比较大的变化,比如官网给出的下面这个例子:

在这里插入图片描述

我们可以新建一个名为SignalConnector的静态类,把绑定信号的工作都放在里面,例如

class_name SignalConnector

static func button_on_pressed(btn:Button,target:Node):
	btn.connect("pressed",target,"_on_button_pressed")

这样当项目移植到4.x,我们只需要修改每个函数为下面的样子即可

class_name SignalConnector

static func button_on_pressed(btn:Button,target:Node):
	btn.pressed.connect(target._on_button_pressed)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章