GraphNode

实验性: This class may be changed or removed in future versions.

继承: GraphElement < Container < Control < Item < Object

具有连接端口的容器,表示GraphEdit中的节点。

描述

GraphNode允许根据其子控件为GraphEdit图形创建具有可定制内容的节点。GraphNode派生自Container,它负责将其子级放置在屏幕上。这类似于VBoxContainer。子级反过来为GraphNode提供所谓的插槽,每个插槽的两侧都可以有一个连接端口。

每个GraphNode插槽由其索引定义,最多可以为节点提供两个端口:一个在左侧,一个在右侧。按照惯例,左侧端口也称为输入端口,右侧端口称为输出端口。每个端口都可以使用不同的类型和颜色单独启用和配置。类型是一个任意值,您可以使用自己的考虑来定义。父级GraphEdit将在每次连接和断开请求时收到此信息。

一旦您添加了至少一个子Control,就可以在检查器扩展坞中配置插槽。属性在“插槽”部分按每个插槽的索引分组。

注意:虽然GraphNode是使用插槽和插槽索引设置的,但启用的端口之间会建立连接。因此,GraphEdit使用端口索引而不是插槽索引。您可以使用get_input_port_slot()get_output_port_slot()从端口索引中获取插槽索引。

属性

bool

ignore_invalid_connection_type

false

MouseFilter

mouse_filter

0 (overrides Control)

String

title

""

方法

void

_draw_port(slot_index: int, position: Vector2i, left: bool, color: Color) virtual

void

clear_all_slots()

void

clear_slot(slot_index: int)

Color

get_input_port_color(port_idx: int)

int

get_input_port_count()

Vector2

get_input_port_position(port_idx: int)

int

get_input_port_slot(port_idx: int)

int

get_input_port_type(port_idx: int)

Color

get_output_port_color(port_idx: int)

int

get_output_port_count()

Vector2

get_output_port_position(port_idx: int)

int

get_output_port_slot(port_idx: int)

int

get_output_port_type(port_idx: int)

Color

get_slot_color_left(slot_index: int) const

Color

get_slot_color_right(slot_index: int) const

Texture2D

get_slot_custom_icon_left(slot_index: int) const

Texture2D

get_slot_custom_icon_right(slot_index: int) const

int

get_slot_type_left(slot_index: int) const

int

get_slot_type_right(slot_index: int) const

HBoxContainer

get_titlebar_hbox()

bool

is_slot_draw_stylebox(slot_index: int) const

bool

is_slot_enabled_left(slot_index: int) const

bool

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) 🔗

当任何GraphNode的插槽更新时发出。


属性说明

bool ignore_invalid_connection_type = false 🔗

  • void set_ignore_invalid_connection_type(value: bool)

  • bool is_ignoring_valid_connection_type()

如果true,您可以连接不同类型的端口,即使父GraphEdit中未明确允许连接。


String title = "" 🔗

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


int get_input_port_count() 🔗

返回具有启用输入端口的插槽数。


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


int get_output_port_count() 🔗

返回具有启用输出端口的插槽数。


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_porttrue,则会出现一个端口,插槽将能够从这一侧连接。

使用type_left/type_right,可以为每个端口分配任意类型。如果两个端口共享相同的类型,或者如果父GraphEdit中允许它们类型之间的连接,则可以连接两个端口(参见GraphEdit.add_valid_connection_type())。请记住,GraphEdit在接受连接方面拥有最终决定权。类型兼容性只是允许发出GraphEdit.connection_request信号。

可以使用color_left/color_rightcustom_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切换插槽的左侧(输入)。如果enabletrue,左侧将出现一个端口,插槽将能够从这一侧连接。


void set_slot_enabled_right(slot_index: int, enable: bool) 🔗

使用给定的slot_index切换插槽的右侧(输出)。如果enabletrue,则右侧将出现一个端口,插槽将能够从这一侧连接。


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) 🔗

应用于大小调整图标的颜色调制。


int port_h_offset = 0 🔗

端口的水平偏移量。


int separation = 2 🔗

端口之间的垂直距离。


Texture2D port 🔗

用于表示端口的图标。


StyleBox panel 🔗

GraphNode插槽区域的默认背景。


StyleBox panel_selected 🔗

选择时用于插槽区域的StyleBox


StyleBox slot 🔗

用于GraphNode的每个插槽的StyleBox


StyleBox titlebar 🔗

用于GraphNode标题栏的StyleBox


StyleBox titlebar_selected 🔗

选择GraphNode时用于标题栏的StyleBox