Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

EditorDock

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

继承: MarginContainer < Container < Control < CanvasItem < Node < Object

派生: FileSystemDock

用于编辑器的可停靠容器。

描述

EditorDock 是一个 Container 节点,可以停靠在编辑器的一个停靠面板槽中。插件可以添加停靠面板来为与 EditorPlugin 相关的控件提供空间。编辑器自带一些内置的停靠面板,例如场景面板、文件系统面板等等。

可以使用 EditorPlugin.add_dock() 添加停靠面板。可以通过更改其属性来自定义停靠面板。

@tool
extends EditorPlugin

# 停靠面板引用。
var dock

# 插件实例化。
func _enter_tree():
    dock = EditorDock.new()
    dock.title = "我的停靠面板"
    dock.dock_icon = preload("./dock_icon.png")
    dock.default_slot = EditorDock.DOCK_SLOT_RIGHT_UL
    var dock_content = preload("./dock_content.tscn").instantiate()
    dock.add_child(dock_content)
    add_dock(dock)

# 插件清理。
func _exit_tree():
    remove_dock(dock)
    dock.queue_free()
    dock = null

教程

属性

bool

accessibility_region

true (overrides Container)

BitField[DockLayout]

available_layouts

5

bool

closable

false

DockSlot

default_slot

-1

Texture2D

dock_icon

Shortcut

dock_shortcut

bool

force_show_icon

false

bool

global

true

StringName

icon_name

&""

String

layout_key

""

String

title

""

Color

title_color

Color(0, 0, 0, 0)

bool

transient

false

方法

void

_load_layout_from_config(config: ConfigFile, section: String) virtual

void

_save_layout_to_config(config: ConfigFile, section: String) virtual const

void

_update_layout(layout: int) virtual

void

close()

void

make_visible()

void

open()


信号

closed() 🔗

当使用上下文弹出菜单中的“关闭”按钮关闭停靠面板时,在它从其父容器中移除之前发出。见 closable


opened() 🔗

当通过 Editor > Editor Docks 菜单打开该 Dock 时,会在其变为可见状态之前发出此信号。


枚举

flags DockLayout: 🔗

DockLayout DOCK_LAYOUT_VERTICAL = 1

允许将停靠面板放置在编辑器两侧的垂直停靠面板插槽中。

DockLayout DOCK_LAYOUT_HORIZONTAL = 2

允许将该停靠面板(Dock)放置在底部的水平停靠槽中。

DockLayout DOCK_LAYOUT_FLOATING = 4

允许将停靠面板设置为浮动(以单独窗口的形式打开)。

DockLayout DOCK_LAYOUT_ALL = 7

允许将停靠面板放置在所有可用插槽中。


enum DockSlot: 🔗

DockSlot DOCK_SLOT_NONE = -1

停靠面板是关闭的。

DockSlot DOCK_SLOT_LEFT_UL = 0

左侧停靠槽的左上(默认布局中为空)。

DockSlot DOCK_SLOT_LEFT_BL = 1

左侧停靠槽的左下(默认布局中为空)。

DockSlot DOCK_SLOT_LEFT_UR = 2

左侧停靠槽的右上(默认布局中为“场景”和“导入”面板)。

DockSlot DOCK_SLOT_LEFT_BR = 3

左侧停靠槽的右下方(默认布局中包含“文件系统”和“历史”面板)。

DockSlot DOCK_SLOT_RIGHT_UL = 4

右侧停靠槽的左上方(默认布局中包含“检查器”、“信号”和“分组”面板)。

DockSlot DOCK_SLOT_RIGHT_BL = 5

右侧停靠槽的左下(默认布局中为空)。

DockSlot DOCK_SLOT_RIGHT_UR = 6

右侧停靠槽的右上(默认布局中为空)。

DockSlot DOCK_SLOT_RIGHT_BR = 7

右侧停靠槽的右下(默认布局中为空)。

DockSlot DOCK_SLOT_BOTTOM = 8

底部面板。

DockSlot DOCK_SLOT_BOTTOM_L = 9

位于底部面板下方、左侧的停靠槽位。

DockSlot DOCK_SLOT_BOTTOM_R = 10

位于底部面板下方、右侧的停靠槽位。

DockSlot DOCK_SLOT_MAX = 11

代表 DockSlot 枚举的大小。


属性说明

BitField[DockLayout] available_layouts = 5 🔗

  • void set_available_layouts(value: BitField[DockLayout])

  • BitField[DockLayout] get_available_layouts()

该停靠面板可用的布局,以位掩码形式表示。默认情况下,该停靠面板允许垂直布局和浮动布局。


bool closable = false 🔗

  • void set_closable(value: bool)

  • bool is_closable()

如果为 true,则可以使用上下文弹出窗口中的“关闭”按钮关闭该停靠面板。启用 global 的停靠面板始终是可关闭的。


DockSlot default_slot = -1 🔗

该属性定义了使用 EditorPlugin.add_dock() 方法添加此面板时,所使用的默认停靠槽位。

面板添加后,可被移动至其他槽位,编辑器会自动在不同会话间记住其位置。若移除后重新添加,该面板将被重置至默认槽位。


Texture2D dock_icon 🔗

该停靠面板的图标,作为纹理。如果已指定,则它将覆盖 icon_name


Shortcut dock_shortcut 🔗

用于打开停靠面板的快捷键。


bool force_show_icon = false 🔗

  • void set_force_show_icon(value: bool)

  • bool get_force_show_icon()

如果设为 true,无论 EditorSettings.interface/editor/docks/dock_tab_styleEditorSettings.interface/editor/docks/bottom_dock_tab_style 怎么设置,该停靠面板(Dock)都会始终显示图标。


bool global = true 🔗

  • void set_global(value: bool)

  • bool is_global()

如果为 true,则停靠面板会出现在编辑器 > 编辑器面板菜单中,并且可以被关闭。非全局的停靠面板仍然可以使用 close() 关闭,或者当 closabletrue 时关闭。


StringName icon_name = &"" 🔗

停靠面板的图标,名称取自编辑器主题中的 EditorIcons 主题类型。可以在此处找到可用的图标列表。


String layout_key = "" 🔗

  • void set_layout_key(value: String)

  • String get_layout_key()

该键值用于在编辑器的布局文件中表示该停靠面板。如果为空,则将改用该停靠面板的显示名称。


String title = "" 🔗

停靠面板选项卡的标题。如果为空,则使用停靠面板的 Node.name。如果名称是自动生成的(包含 @),则会改用第一个子节点的名称。


Color title_color = Color(0, 0, 0, 0) 🔗

  • void set_title_color(value: Color)

  • Color get_title_color()

停靠面板选项卡标题的颜色。如果其 Alpha 为 0.0,则将使用默认字体颜色。


bool transient = false 🔗

  • void set_transient(value: bool)

  • bool is_transient()

如果为 true,则加载编辑器布局时,停靠面板不会自动打开或关闭,只会移动。它也无法通过快捷键打开。这是为在特定情况下打开和关闭的停靠面板而设计的,例如选择 TileMapAnimationTree 节点时。


方法说明

void _load_layout_from_config(config: ConfigFile, section: String) virtual 🔗

实现该方法以处理加载该停靠面板的布局。它等效于 EditorPlugin._set_window_layout()section 是基于 layout_key 的独特节。


void _save_layout_to_config(config: ConfigFile, section: String) virtual const 🔗

实现该方法来处理保存该停靠面板的布局。它等价于 EditorPlugin._get_window_layout()section 是基于 layout_key 的独特节。


void _update_layout(layout: int) virtual 🔗

实现该方法以处理该停靠面板的布局切换。layoutDockLayout 枚举常量之一。

func _update_layout(layout):
    box_container.vertical = (layout == DOCK_LAYOUT_VERTICAL)

void close() 🔗

关闭该停靠面板,使其选项卡隐藏。


void make_visible() 🔗

聚焦停靠面板的选项卡(如果是浮动窗口,则聚焦窗口)。如果该停靠面板已关闭,则会将其打开。如果是底部停靠面板,则使底部面板可见。


void open() 🔗

打开停靠面板。它将显示在上次使用的停靠插槽中。如果该停靠面板没有默认插槽,它将以浮动窗口的形式打开。

注意:它不会聚焦停靠面板。如果想打开并聚焦停靠面板,请使用 make_visible()