Godot游戏引擎:GraphEdit和GraphNode教程(二)——GraphEdit

Godot教程——GraphEdit和GraphNode

上文:
Godot游戏引擎:GraphEdit和GraphNode教程(一)——GraphNode

承接上文,你经过了一段贤者时刻,然后喝了杯水,抬起头思考人生。

你放松了一会儿,然后继续思考要做什么。——鲁迅(我没说过这句话)

接下来,你想着要把两个GraphNode连接在一起。如果不连接,那么GraphNode就是没意义的,之前写的槽也没有了意义。

在这里插入图片描述

你像这样想着,新建了一个界面节点,把之前做好的GraphNode实例化过来了两个,然后按下F6。

在这里插入图片描述
两个GraphNode节点不出意外的显示出来了,连接槽也没问题。“那么…”当你把鼠标放在一个槽上,奋力把它拖到另一个节点的槽上时,你发现它根本没有反应!!!

这意外的问题对你造成了不小的打击。它迫使你进入了贤者时间,你思考着为什么没有办法连接。

疑惑随着知识而增长。——歌德

就在你翻着文档苦思冥想的时候,你发现了——GraphEdit。

在这里插入图片描述
你发现没有办法从GraphNode上着手解决这个问题,那么你就打算从GrapEdit上下手。想着,你打开了GraphEdit的文档。

在这里插入图片描述
你又双叒掏出了你的翻译器(PS:有道云不打钱,不给他做广告),对着机翻一顿输出。

终于,你大概明白了是什么意思。GraphEdit可以管理GraphNode之间的连接,于是你新建了一个GraphEdit,把两个GraphNode节点放了进去,按下了运行。

在这里插入图片描述

确实显示出来了,但是两个GraphNode叠在一起了你觉得没大问题,把他们两个分开,然后你试着从槽中拖出线来。

在这里插入图片描述
确实拖出来了!但是当你尝试把这根线连接到另一个节点的槽上时,却发现仍然连接不上。

GraphEdit部分

你祭出帮助文档,继续翻看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)


于是你可以用鼠标删除连接了。

我们只有做到劳逸结合,学习时才能事半功倍。

你又开始玩起来,这期教程到此结束了。

在这里插入图片描述

下一篇
Godot游戏引擎:GraphEdit和GraphNode教程(三)——GraphEdit事件处理

发布了3 篇原创文章 · 获赞 2 · 访问量 167

猜你喜欢

转载自blog.csdn.net/weixin_44222082/article/details/105121274