上文:
Godot游戏引擎:GraphEdit和GraphNode教程(一)——GraphNode
承接上文,你经过了一段贤者时刻,然后喝了杯水,抬起头思考人生。
你放松了一会儿,然后继续思考要做什么。——鲁迅(我没说过这句话)
接下来,你想着要把两个GraphNode连接在一起。如果不连接,那么GraphNode就是没意义的,之前写的槽也没有了意义。
你像这样想着,新建了一个界面节点,把之前做好的GraphNode实例化过来了两个,然后按下F6。
两个GraphNode节点不出意外的显示出来了,连接槽也没问题。“那么…”当你把鼠标放在一个槽上,奋力把它拖到另一个节点的槽上时,你发现它根本没有反应!!!
这意外的问题对你造成了不小的打击。它迫使你进入了贤者时间,你思考着为什么没有办法连接。
疑惑随着知识而增长。——歌德
就在你翻着文档苦思冥想的时候,你发现了——GraphEdit。
你发现没有办法从GraphNode上着手解决这个问题,那么你就打算从GrapEdit上下手。想着,你打开了GraphEdit的文档。
你又双叒掏出了你的翻译器(PS:有道云不打钱,不给他做广告),对着机翻一顿输出。
终于,你大概明白了是什么意思。GraphEdit可以管理GraphNode之间的连接,于是你新建了一个GraphEdit,把两个GraphNode节点放了进去,按下了运行。
确实显示出来了,但是两个GraphNode叠在一起了你觉得没大问题,把他们两个分开,然后你试着从槽中拖出线来。
确实拖出来了!但是当你尝试把这根线连接到另一个节点的槽上时,却发现仍然连接不上。
你祭出帮助文档,继续翻看GraphEdit的说明。
你找到了这个方法,你看了一眼就发现这个就是你要找的那个方法。于是你创建了一个脚本,写下了代码,把脚本挂在GraphEdit上,点击运行。
extends GraphEdit
func _ready():
connect_node("GraphNode", 0, "GraphNode2", 0)
OHHHHHHHHHHHHHH!!!!!!确实连接上了!!!你多次拖动这个两个节点,确认无误是连接上了。
稍微平复下心情之后,你开始回想:为什么我拖动就不能连接上呢?如果只能用这种办法连接的话,就有点过分吧。那么我能够拉出线来又有什么用呢?
你不禁陷入了对GraphEdit和GraphNode存在的意义的怀疑之中…
这时,你听到来自天上的声音:“打开节点面板!!!”你以为你出现了幻觉,但是不知道为什么,你还是打开了信号面板。
来自笔者的神秘力量(笑)
看着这串长长的信号,你在其中寻找着能够对自己有帮助的那个。突然,你看到了这个信号——connection_request()
。冥冥中的神秘存在告诉着你这就是你要找的信号,于是你赶紧把这个信号连接到GraphEdit节点。
然后你发现,创建出的方法和connect_node()
方法一样有四个参数,而且参数的名字都是一样的!所以你更改了你的代码:
extends GraphEdit
func _ready():
# connect_node("GraphNode", 0, "GraphNode2", 0)
pass
func _on_GraphEdit_connection_request(from, from_slot, to, to_slot):
connect_node(from, from_slot, to, to_slot)
接着,你点击运行。
可以用鼠标连接两个节点了!!!你终于开心了起来。
既然这样,那么删除连接也是一样的办法。disconnection_request()
extends GraphEdit
func _ready():
# connect_node("GraphNode", 0, "GraphNode2", 0)
pass
func _on_GraphEdit_connection_request(from, from_slot, to, to_slot):
connect_node(from, from_slot, to, to_slot)
func _on_GraphEdit_disconnection_request(from, from_slot, to, to_slot):
disconnect_node(from, from_slot, to, to_slot)
于是你可以用鼠标删除连接了。
我们只有做到劳逸结合,学习时才能事半功倍。
你又开始玩起来,这期教程到此结束了。