【Godot4.3】GraphEdit全解析(1) - 基础介绍

news2024/11/15 7:55:24

概述

最早系统性的讲述Godot的GraphEditGraphNode的教程应该是Hi小胡的了,也有小伙伴已经设计出一些插件或小应用用于辅助自己的项目。或者更直观的你可以去看看B站的Godot的Visual Shader教程。

我是学了好几次,学完就忘了用,本篇是基于Godot4.0正式版未出时自己的一篇笔记改造而来,CSDN上其实已经有小伙伴总结了很详细的使用方法,我这篇就算是个水分很大的个人笔记。

主要是一圈学下来,发现基于节点和连线的可视化编程还是有一定的可取之处的。在流程化方面,“图”形式比代码形式就是直观一。本篇就算是这个方向探索的第一篇。

继承体系

在Godot编辑器按F1打开搜索帮助对话框,搜索关键字graph,可以看到相关的类型和继承体系。

在这里插入图片描述

可以看到:

  • GraphEdit继承自Control,而GraphNode和新增的GraphFrame,继承自GraphElementGraphElement再继承自Container,所以本质上GraphNode是一个容器

Slot

GraphNode下如果不存在控件子节点,则不会显示slot属性分组,一旦有直接的控件或容器子节点,则显示一对(左右各一个连接点)可用的slot

以下面截图所示为例,GraphNode下有一个直接的控件子节点GridContainer,所以它只能拥有一对输入和输出的slot。

在这里插入图片描述

相反,你可以使用HBoxContainer来排版LabelLineEdit控件。这样你便可以开启两对插槽。

在这里插入图片描述

左右的连接点,可以分别设置启用、颜色、图表等。

在这里插入图片描述

通过设置left_typeright_type,貌似只有数字一致的端口,才可以互相连接。

保存GraphNode为子场景

GraphNode可以保存为单独的场景,然后实例化,这对设计多样复杂的节点类型提供了可能。

在这里插入图片描述

能存储为场景,自然也可以编写扩展自GraphNode的自定义类。

关闭节点

首先需要启用show_close属性,启用的节点会在右上角显示一个关闭图标。

在这里插入图片描述

为了实现关闭,需要链接节点的close_request信号。

在这里插入图片描述

最好是将GraphNode单独存储为一个场景,然后为其自身添加代码。

在这里插入图片描述

缩放节点

在这里插入图片描述

func _on_resize_request(new_minsize):
	size = new_minsize
	pass

连接节点

在这里插入图片描述

extends GraphEdit

func _on_connection_request(from_node, from_port, to_node, to_port):
	connect_node(from_node, from_port, to_node, to_port)
	pass

在这里插入图片描述

通过设置left_typeright_type,貌似只有数字一致的端口,才可以连接。

因为默认的左右端口type都是0,所以才会出现像上面这样的混乱连接形式。

在这里插入图片描述

通过设定左右端口的type数字,可以实现连接的限制。

断开连接

通过开启GraphEditright_disconnects可以向右拖动连接线,取消两个节点间的连接。

在这里插入图片描述

简单应用实例

基于TextEdit创建一个带多行文本框的节点。

在这里插入图片描述

添加多个节点实例:

运行后进行顺序连接:

代码如下:

extends VBoxContainer

@onready var graph_edit = $GraphEdit


func _on_button_pressed():
	var list  = graph_edit.get_connection_list()
	var str_arr:PackedStringArray = []
	for i in range(list.size()):
		var from_txt = graph_edit.get_node(str(list[i].from)).get_node("TextEdit").text
		var to_txt = graph_edit.get_node(str(list[i].to)).get_node("TextEdit").text
		str_arr.append(from_txt)
		if i == list.size() - 1:str_arr.append(to_txt)
	
	print("\n".join(str_arr))
	pass 

其中:

  • get_connection_list()返回一个 Array[Dictionary],每个字典存储两个节点和端口之间的连接,形式如下:
{ from_port: 0, from_node: "GraphNode name 0", to_port: 1, to_node: "GraphNode name 1" }

我们可以基于这些连接信息,来进行一些处理或者获得一些结果。

输出:

哈哈哈
你好

总结

  • GraphNode是一种特殊的Container,自动竖向排列子节点,并为其每个直接子节点,创建一个所谓插槽的概念,并显示左右两个连接点
  • 连接点的type是一个整数,只有type数值相同的点才能互相连接
  • 单个的GraphNode可以另存为场景,通过场景实例化的形式添加,这样可以很好的进行节点的单独设计
  • 通过获取连接信息我们可以处理逻辑,产出结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2155384.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java只有国人在搞了?

从Java诞生到现在,在全球一直属于最大的开发平台,拥有着世界上最多的开发者和最活跃的社区。你说Java只有国人在搞就有点过分了,Java中常用的主流框架全是外国人写的,虽说阿里也为Java做了很多贡献,但你还真没有资格说…

代码随想录Day 52|题目:101.孤岛的面积、102.沉没孤岛、103.水流问题、104.建造最大岛屿

提示:DDU,供自己复习使用。欢迎大家前来讨论~ 文章目录 图论part03题目一:101.孤岛的总面积解题思路DFS**BFS** 题目二:102. 沉没孤岛解题思路 题目三:103. 水流问题解题思路优化 题目四:104.建造最大岛屿…

Windows11+Microsoft MPI v10.1.3 安装配置记录

WindowsMicrosoft MPI v10.1.3 安装配置记录 MS-MPI 安装VS中进行配置属性管理器-添加新项目属性表VC目录-包含目录链接器-常规-附加库目录链接器-输入-附加依赖项 测试 某个项目需要MPI支持,在此记录MS MPI的安装配置过程。 MS-MPI 安装 在微软官网下载 两个都下…

去中心化的力量:探索Web3的分布式网络

Web3作为一种新兴的网络架构,代表了对互联网发展的一种探索。与传统的中心化互联网模式相比,Web3致力于通过去中心化的方式构建更加开放和透明的数字世界。本文将探讨Web3的核心理念、技术实现及其潜在应用。 一、去中心化的核心理念 Web3的去中心化理…

深度学习02-pytorch-06-张量的形状操作

在 PyTorch 中,张量的形状操作是非常重要的,可以让你灵活地调整和处理张量的维度和数据结构。以下是一些常用的张量形状函数及其用法,带有详细解释和举例说明: 1. reshape() 功能: 改变张量的形状,但不改变数据的顺序…

Stable Diffusion 使用详解(12)--- 设计师风格变换

目录 背景 seg模型(语义分割) 描述 原理 实战-装修风格变换 现代风格 欧式风格转换 提示词及相关参数设置 模型选择 seg cn 加持 效果 还能做点啥 问题 解决方法 出图效果 二次优化调整 二次出图效果 地中海风格转换 参数修改 效果 …

软硬件项目运维方案(Doc原件完整版套用)

1 系统的服务内容 1.1 服务目标 1.2 信息资产统计服务 1.3 网络、安全系统运维服务 1.4 主机、存储系统运维服务 1.5 数据库系统运维服务 1.6 中间件运维服务 2 运维服务流程 3 服务管理制度规范 3.1 服务时间 3.2 行为规范 3.3 现场服务支持规范 3.4 问题记录规范…

C++容器list底层迭代器的实现逻辑~list相关函数模拟实现

目录 1.两个基本的结构体搭建 2.实现push_back函数 3.关于list现状的分析(对于我们如何实现这个迭代器很重要) 3.1和string,vector的比较 3.2对于list的分析 3.3总结 4.迭代器类的封装 5.list容器里面其他函数的实现 6.个人总结 7.代码附录 1.两…

【C++ Primer Plus习题】17.1

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: #include <iostream> using namespace std;int main() {char …

移动登录页:让用户开启一段美好的旅程吧。

Hi,大家好&#xff0c;我是大千UI工场&#xff0c;移动登录页千千万&#xff0c;这里最好看&#xff0c;本期分享一批移动端的登录页面&#xff0c;供大家欣赏。 本次分享的是毛玻璃/3D风格的登录页。

【Unity设计模式】Unity MVC/MVP架构介绍,及MVC/MVP框架的简单应用

文章目录 什么是MVC&#xff1f;MVC眼花缭乱设计图MVP和MVC最经典的MVC的业务流程Unity MVC 框架示例1. 创建项目结构2. 实现模型3. 实现视图4. 实现控制器5. 使用示例 总结参考完结 什么是MVC&#xff1f; MVC自1982年被设计出来&#xff0c;至今都有着很大比重的使用率&…

前端项目代码开发规范及工具配置

在项目开发中&#xff0c;良好的代码编写规范是项目组成的重要元素。本文将详细介绍在项目开发中如何集成相应的代码规范插件及使用方法。 项目规范及工具 集成 EditorConfig集成 Prettier1. 安装 Prettier2. 创建 Prettier 配置文件3. 配置 .prettierrc4. 使用 Prettier 集成 …

python--基础语法(2)

1.顺序语句 默认情况下&#xff0c;Python的代码执行顺序是按照从上到下的顺序&#xff0c;依次执行的。 2.条件语句 条件语句能够表达“如果 ...否则 ...”这样的语义这构成了计算机中基础的逻辑判定条件语&#xff0c; 也叫做 分支语句。表示了接下来的逻辑可能有几种走向…

HOSTS文件劫持--导致笔记本网络卡顿

写在前面&#xff1a; 因为笔记本网速卡顿&#xff0c;去维修店维修网卡&#xff0c;网卡咱们测试都没有问题&#xff0c;一直吐槽售后服务一般。自己也装过几次系统了 点击任务栏中的搜索图标&#xff0c;输入"cmd"&#xff0c;点击"命令提示符"选择&qu…

笔记整理—内核!启动!—linux应用编程、网络编程部分(2)linux的文件管理策略

关于硬盘中的静态文件与inode&#xff1a;例如文件存储在扇区中&#xff0c;一个文件占用10个字节&#xff0c;一个扇区为512字节&#xff0c;这样的情况下一个扇区就只放了一个实际为10字节的文件&#xff0c;余下的502字节不可存放其他文件&#xff0c;因为扇区已经是可以访问…

C++入门(07)标准输入输出_cin

文章目录 4.cin4.1 基本功能4.2 常见数据类型的输入4.3 cin多项输入中的分隔符如果需要将空格作为输入的一部分读入 4.4 使用 cin 一次读取多个整数方法一方法二 接上一篇 cout C入门(07)标准输入输出_cout、缓冲、\n endl 4.cin 4.1 基本功能 C 标准输入 cin 是一个控制台输…

LLMs之MemLong:《MemLong: Memory-Augmented Retrieval for Long Text Modeling》翻译与解读

LLMs之MemLong&#xff1a;《MemLong: Memory-Augmented Retrieval for Long Text Modeling》翻译与解读 导读&#xff1a;MemLong 是一种新颖高效的解决 LLM 长文本处理难题的方法&#xff0c;它通过外部检索器获取历史信息&#xff0c;并将其与模型的内部检索过程相结合&…

IPsec-VPN中文解释

网络括谱图 IPSec-VPN 配置思路 1 配置IP地址 FWA:IP地址的配置 [FW1000-A]interface GigabitEthernet 1/0/0 [FW1000-A-GigabitEthernet1/0/0]ip address 10.1.1.1 24 //配置IP地址 [FW1000-A]interface GigabitEthernet 1/0/2 [FW1000-A-GigabitEthernet1/0/2]ip a…

C#测试调用PdfiumViewer浏览PDF文件的基本用法

印章管理项目后续准备实现打开浏览PDF文件并进行盖章的功能&#xff0c;需要在Winform中使用控件在线浏览PDF文件&#xff0c;在网上找了几个开源的PDF浏览控件进行测试&#xff0c;以便应用于印章管理项目。本文测试调用PdfiumViewer模块打开及浏览PDF文件。   PdfiumViewer…

VisionPro - 基础 - 模板匹配技术和在VP中的使用 - PMAlign - PatMax(4)- 控制模板的匹配

前言&#xff1a; 针对PatMax 的高级应用和原理&#xff0c;在这一节继续进行说明&#xff1a;这一节主要考虑的是PatMax模板匹配的原理&#xff1a;如何控制模板的匹配。 本节先介绍了几个模板匹配的衡量标准&#xff0c;比如模板匹配分数&#xff0c;和模板的几种模板匹配的…