GraphNode
实验性: This class may be changed or removed in future versions.
继承: GraphElement < Container < Control < CanvasItem < Node < Object
带有连接端口的容器,代表 GraphEdit 中的一个节点。
描述
GraphNode 能够在 GraphEdit 图中创建节点,节点会根据其子控件定制内容。GraphNode 派生自 Container,负责将其子节点放置在屏幕上。工作原理类似于 VBoxContainer。而子节点为 GraphNode 提供所谓的插槽,每个插槽的两侧都可以有一个连接端口。
GraphNode 的插槽由其索引定义,一个插槽可以为节点提供最多两个端口:一个在左侧,一个在右侧。根据惯例,左侧端口也被称为输入端口,右侧端口被称为输出端口。每个端口都可以单独启用和配置,使用不同的类型和颜色。类型是你按照自己的需要来定义的任意值。父 GraphEdit 将在每个连接和断开连接请求中收到此信息。
添加至少一个子 Control 后,就可以在“检查器”面板中配置插槽。这些属性在“Slot”部分中按每个插槽的索引进行分组。
注意:虽然 GraphNode 是使用插槽和插槽索引设置的,但连接是在启用的端口之间建立的。因此 GraphEdit 使用端口的索引,而不是插槽的索引。可以使用 get_input_port_slot 和 get_output_port_slot 从端口索引中获取插槽索引。
属性
| ||
mouse_filter |
| |
|
方法
void | _draw_port(slot_index: int, position: Vector2i, left: bool, color: Color) virtual |
void | |
void | clear_slot(slot_index: int) |
get_input_port_color(port_idx: int) | |
get_input_port_position(port_idx: int) | |
get_input_port_slot(port_idx: int) | |
get_input_port_type(port_idx: int) | |
get_output_port_color(port_idx: int) | |
get_output_port_position(port_idx: int) | |
get_output_port_slot(port_idx: int) | |
get_output_port_type(port_idx: int) | |
get_slot_color_left(slot_index: int) const | |
get_slot_color_right(slot_index: int) const | |
get_slot_custom_icon_left(slot_index: int) const | |
get_slot_custom_icon_right(slot_index: int) const | |
get_slot_type_left(slot_index: int) const | |
get_slot_type_right(slot_index: int) const | |
is_slot_draw_stylebox(slot_index: int) const | |
is_slot_enabled_left(slot_index: int) const | |
is_slot_enabled_right(slot_index: int) const | |
void | set_slot(slot_index: int, enable_left_port: bool, type_left: int, color_left: Color, enable_right_port: bool, type_right: int, color_right: Color, custom_icon_left: Texture2D = null, custom_icon_right: Texture2D = null, draw_stylebox: bool = true) |
void | set_slot_color_left(slot_index: int, color: Color) |
void | set_slot_color_right(slot_index: int, color: Color) |
void | set_slot_custom_icon_left(slot_index: int, custom_icon: Texture2D) |
void | set_slot_custom_icon_right(slot_index: int, custom_icon: Texture2D) |
void | set_slot_draw_stylebox(slot_index: int, enable: bool) |
void | set_slot_enabled_left(slot_index: int, enable: bool) |
void | set_slot_enabled_right(slot_index: int, enable: bool) |
void | set_slot_type_left(slot_index: int, type: int) |
void | set_slot_type_right(slot_index: int, type: int) |
主题属性
| ||
| ||
| ||
信号
slot_updated(slot_index: int) 🔗
当任何图形节点的插槽更新时发出。
属性说明
bool ignore_invalid_connection_type = false
🔗
如果为 true
,则可以连接不同类型的端口,即使父级 GraphEdit 中未明确允许该连接。
显示在 GraphNode 标题栏中的文本。
方法说明
void _draw_port(slot_index: int, position: Vector2i, left: bool, color: Color) virtual 🔗
该方法目前没有描述,请帮我们贡献一个吧!
void clear_all_slots() 🔗
禁用 GraphNode 的所有插槽。会移除该 GraphNode 的所有输入/输出端口。
void clear_slot(slot_index: int) 🔗
禁用索引为 slot_index
的插槽。会移除该 GraphNode 的对应输入和输出端口。
Color get_input_port_color(port_idx: int) 🔗
返回索引为 port_idx
的输入端口的 Color。
返回启用了输入端口的插槽数。
Vector2 get_input_port_position(port_idx: int) 🔗
返回索引为 port_idx
的输入端口的位置。
int get_input_port_slot(port_idx: int) 🔗
返回索引为 port_idx
的输入端口的对应插槽索引。
int get_input_port_type(port_idx: int) 🔗
返回索引为 port_idx
的输入端口的类型。
Color get_output_port_color(port_idx: int) 🔗
返回索引为 port_idx
的输出端口的 Color。
返回启用了输出端口的插槽数。
Vector2 get_output_port_position(port_idx: int) 🔗
返回索引为 port_idx
的输出端口的位置。
int get_output_port_slot(port_idx: int) 🔗
返回索引为 port_idx
的输出端口的对应插槽索引。
int get_output_port_type(port_idx: int) 🔗
返回索引为 port_idx
的输出端口的类型。
Color get_slot_color_left(slot_index: int) const 🔗
返回索引为 slot_index
的插槽左侧(输入)的 Color。
Color get_slot_color_right(slot_index: int) const 🔗
返回索引为 slot_index
的插槽右侧(输出)的 Color。
Texture2D get_slot_custom_icon_left(slot_index: int) const 🔗
返回具有给定 slot_index
的插槽的左侧(输入)的自定义 Texture2D。
Texture2D get_slot_custom_icon_right(slot_index: int) const 🔗
返回具有给定 slot_index
的插槽的右侧(输出)的自定义 Texture2D。
int get_slot_type_left(slot_index: int) const 🔗
返回索引为 slot_index
的插槽左侧(输入)的类型。
int get_slot_type_right(slot_index: int) const 🔗
返回索引为 slot_index
的插槽右侧(输出)的类型。
HBoxContainer get_titlebar_hbox() 🔗
返回标题栏所使用的 HBoxContainer,默认只包含一个 Label,用于显示标题。可用于向标题栏添加自定义控件,例如选项和关闭按钮等。
bool is_slot_draw_stylebox(slot_index: int) const 🔗
如果绘制索引为 slot_index
的插槽的背景 StyleBox,则返回 true。
bool is_slot_enabled_left(slot_index: int) const 🔗
如果启用了索引为 slot_index
的插槽的左侧(输入),则返回 true
。
bool is_slot_enabled_right(slot_index: int) const 🔗
如果启用了索引为 slot_index
的插槽的右侧(输出),则返回 true
。
void set_slot(slot_index: int, enable_left_port: bool, type_left: int, color_left: Color, enable_right_port: bool, type_right: int, color_right: Color, custom_icon_left: Texture2D = null, custom_icon_right: Texture2D = null, draw_stylebox: bool = true) 🔗
设置索引为 slot_index
的插槽的属性。
如果 enable_left_port
/enable_right_port
为 true
,则将出现一个端口,插槽将能够从这一侧连接。
使用 type_left
/type_right
可以为每个端口分配一个任意类型。如果两个端口具有相同的类型,或者如果它们的类型之间的连接在父 GraphEdit 中被允许(参见 GraphEdit.add_valid_connection_type),那么这两个端口就可以被连接。请记住,GraphEdit 在接受连接上拥有最终决定权。类型兼容性只允许发出 GraphEdit.connection_request 信号。
可以使用 color_left
/color_right
和 custom_icon_left
/custom_icon_right
进一步定制端口。颜色参数为图标添加了一个色调。自定义图标可以用来覆盖默认的端口点。
此外,draw_stylebox
可以用来启用或禁用每个插槽的背景样式框的绘制。参见 slot。
单个属性也可以使用 set_slot_*
方法之一来设置。
注意:该方法只设置插槽的属性。要创建插槽本身,请将 Control 派生的子节点添加到该 GraphNode。
void set_slot_color_left(slot_index: int, color: Color) 🔗
将索引为 slot_index
的插槽的左侧(输入)的 Color 设置为 color
。
void set_slot_color_right(slot_index: int, color: Color) 🔗
将索引为 slot_index
的插槽的右侧(输出)的 Color 设置为 color
。
void set_slot_custom_icon_left(slot_index: int, custom_icon: Texture2D) 🔗
将索引为 slot_index
的插槽的左侧(输入)的自定义 Texture2D 设置为 custom_icon
。
void set_slot_custom_icon_right(slot_index: int, custom_icon: Texture2D) 🔗
将索引为 slot_index
的插槽的右侧(输出)的自定义 Texture2D 设置为 custom_icon
。
void set_slot_draw_stylebox(slot_index: int, enable: bool) 🔗
开关索引为 slot_index
的插槽的背景 StyleBox。
void set_slot_enabled_left(slot_index: int, enable: bool) 🔗
切换给定插槽 slot_index
的左侧(输入)端口。如果 enable
为 true
,则左侧会出现一个端口,并且该插槽可以从这一侧连接。
void set_slot_enabled_right(slot_index: int, enable: bool) 🔗
切换给定插槽 slot_index
的右侧(输出)端口。如果 enable
为 true
,则右侧会出现一个端口,并且该插槽可以从这一侧连接。
void set_slot_type_left(slot_index: int, type: int) 🔗
将给定插槽 slot_index
的左侧(输入)类型设置为 type
。如果该值为负,则所有的连接将不允许通过用户输入来创建。
void set_slot_type_right(slot_index: int, type: int) 🔗
将给定插槽 slot_index
的右侧(输出)类型设置为 type
。如果该值为负,则所有的连接将不允许通过用户输入来创建。
主题属性说明
Color resizer_color = Color(0.875, 0.875, 0.875, 1)
🔗
应用于调整尺寸大小图标的颜色调制。
端口的水平偏移量。
端口之间的垂直距离。
该图标用于表示端口。
GraphNode 槽区域的默认背景。
用于被选中时的插槽区域的 StyleBox。
用于 GraphNode 的每个插槽的 StyleBox。
用于该 GraphNode 标题栏的 StyleBox。
当 GraphNode 被选中时,用于其标题栏的 StyleBox。