近日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)