SceneTree
继承
简要描述
通过节点层次结构管理场景。
描述
作为最重要的类之一,SceneTree管理场景中节点的层次以及场景本身。可以添加,检索和删除节点。 整个场景树(以及当前场景)都可以暂停。 可以加载,切换和重新加载场景。
您还可以使用SceneTree将您的节点分为几组:每个节点可以分配想要创建的任意数量的组,例如 一个“敌人”团体。 然后,您可以迭代这些组甚至调用方法,并一次在组的所有成员上设置属性。
SceneTree是场景使用的默认MainLoop实现,因此负责游戏循环。
成员
类型 | 属性名 | 默认值 |
---|---|---|
Node | current_scene | |
bool | debug_collisions_hint | false |
bool | debug_navigation_hint | false |
Node | edited_scene_root | |
MultiplayerAPI | multiplayer | |
bool | multiplayer_poll | true |
NetworkedMultiplayerPeer | network_peer | |
bool | paused | false |
bool | refuse_new_network_connections | false |
Viewport | root | |
bool | use_font_oversampling | false |
方法
返回值类型 | 方法名称 |
---|---|
Variant | call_group(group: String, method: String, ...) vararg |
Variant | call_group_flags(flags: int, group: String, method: String, ...) vararg |
int | change_scene(path: String) |
int | change_scene_to(packed_scene: PackedScene) |
SceneTreeTimer | create_timer(time_sec: float, pause_mode_process: bool = true) |
int | get_frame() const |
PoolIntArray | get_network_connected_peers() const |
int | get_network_unique_id() const |
int | get_node_count() const |
Array | get_nodes_in_group(group: String) |
int | get_rpc_sender_id() const |
bool | has_group(name: String) const |
bool | has_network_peer() const |
bool | is_input_handled() |
bool | is_network_server() const |
void | notify_group(group: String, notification: int) |
void | notify_group_flags(call_flags: int, group: String, notification: int) |
void | queue_delete(obj: Object) |
void | quit(exit_code: int = -1) |
int | reload_current_scene() |
void | set_auto_accept_quit(enabled: bool) |
void | set_group(group: String, property: String, value: Variant) |
void | set_group_flags(call_flags: int, group: String, property: String, value: Variant) |
void | set_input_as_handled() |
void | set_quit_on_go_back(enabled: bool) |
void | set_screen_stretch(mode: int, aspect: int, minsize: Vector2, shrink: float = 1) |
信号
- **connected_to_server**
每当此SceneTree的network_peer成功连接到服务器时发出。
- **connection_failed**
每当此SceneTree的network_peer无法建立与服务器的连接时发出。
- **files_dropped**
当文件从OS文件管理器中拖放到游戏窗口中时发出。
单击全局菜单项时发出。
- **idle_frame**
在SceneTree中的每个节点上调用Node._process之前立即发出。
- **network_peer_connected**
每当此SceneTree的network_peer与新的对等方连接时发出。ID是新同伴的同伴ID。 当其他客户端连接到同一服务器时,客户端会收到通知。 连接到服务器后,客户端还将收到该服务器的信号(ID为1)。
- **network_peer_disconnected**
每当此SceneTree的network_peer与对等方断开连接时发出。当其他客户端从同一服务器断开连接时,客户端会收到通知。
- **node_added**
每当将节点添加到SceneTree时发出。
- **node_configuration_warning_changed**
当节点的配置更改时发出。仅在tool
模式下发射。
- **node_removed**
每当从SceneTree中删除节点时就发出。
- **node_renamed**
重命名节点时发出。
- **physics_frame**
在SceneTree中的每个节点上调用Node._physics_process之前立即发出。
- **screen_resized**
当屏幕分辨率(全屏)或窗口大小(窗口)更改时发出。
- **server_disconnected**
每当此SceneTree的network_peer与服务器断开连接时发出。仅在客户端上发出。
- **tree_changed**
每当SceneTree层次结构发生更改(移动或重命名子项,等等)时,就发出。
枚举
enum GroupCallFlags:
- **GROUP_CALL_DEFAULT = 0**
呼叫没有标志的组(默认)。
- **GROUP_CALL_REVERSE = 1**
以相反的场景顺序呼叫组。
- **GROUP_CALL_REALTIME = 2**
立即呼叫群组(呼叫通常在空闲状态下进行)。
- **GROUP_CALL_UNIQUE = 4**
即使呼叫已执行多次,也只能呼叫一个群组。
enum StretchMode:
- **STRETCH_MODE_DISABLED = 0**
不能伸展。
- **STRETCH_MODE_2D = 1**
以更高的分辨率渲染(插值)。
- **STRETCH_MODE_VIEWPORT = 2**
保持指定的显示分辨率。无插值。 内容可能显示为像素化。
enum StretchAspect:
- **STRETCH_ASPECT_IGNORE = 0**
在窗口中填充内容以覆盖过多的空间。内容可能看起来很绷紧。
- **STRETCH_ASPECT_KEEP = 1**
通过在任一轴上填充黑条来保持相同的宽高比。这样可以防止变形。
- **STRETCH_ASPECT_KEEP_WIDTH = 2**
垂直展开。如果窗口太宽,则可能会出现左/右黑条。
- **STRETCH_ASPECT_KEEP_HEIGHT = 3**
水平扩。如果窗口太高,则可能会出现顶部/底部的黑条。
- **STRETCH_ASPECT_EXPAND = 4**
沿两个方向扩展,保持相同的纵横比。这样可以防止变形,同时避免黑条。
常量
成员说明
- Node current_scene
setter | set_current_scene(value) |
---|---|
getter | get_current_scene |
- bool debug_collisions_hint
Default | false |
---|---|
setter | set_debug_collisions_hint(value) |
getter | is_debugging_collisions_hint |
- bool
Default | false |
---|---|
setter | set_debug_navigation_hint(value) |
getter | is_debugging_navigation_hint |
- Node edited_scene_root
setter | set_edited_scene_root(value) |
---|---|
getter | get_edited_scene_root |
- MultiplayerAPI multiplayer
setter | set_multiplayer(value) |
---|---|
getter | get_multiplayer |
- bool multiplayer_poll
Default | true |
---|---|
setter | set_multiplayer_poll_enabled(value) |
getter | is_multiplayer_poll_enabled |
- NetworkedMultiplayerPeer network_peer
setter | set_network_peer(value) |
---|---|
getter | get_network_peer |
- bool paused
Default | false |
---|---|
setter | set_pause(value) |
getter | is_paused |
- bool refuse_new_network_connections
Default | false |
---|---|
setter | set_refuse_new_network_connections(value) |
getter | is_refusing_new_network_connections |
- Viewport root
getter | get_root |
---|
- bool use_font_oversampling
Default | false |
---|---|
setter | set_use_font_oversampling(value) |
getter | is_using_font_oversampling |
方法说明
- call_group call_group(group: String, method: String, ...) vararg
在给定组的每个成员上调用方法
。
- call_group_flags call_group_flags(flags: int, group: String, method: String, ...) vararg
遵循给定的GroupCallFlags,在给定组的每个成员上调用method
。
- change_scene change_scene(path: String)
将运行场景加载到PackedScene中并创建新实例后,将运行场景更改为给定path
处的场景。
成功返回OK,如果无法将path
加载到PackedScene中,则返回ERR_CANT_OPEN,如果无法实例化该场景,则返回ERR_CANT_CREATE。
- change_scene_to change_scene_to(packed_scene: PackedScene)
将运行场景更改为给定PackedScene的新实例。
成功返回OK,如果无法实例化场景,则返回ERR_CANT_CREATE。
- create_timer create_timer(time_sec: float, pause_mode_process: bool = true)
返回一个SceneTreeTimer,它将在此SceneTree中给定的时间(秒)后SceneTreeTimer.timeout。如果将pause_mode_process
设置为false
,则暂停SceneTree也将暂停计时器。
通常用于创建单触发延迟计时器,如以下示例所示:
func some_function():
print("start")
yield(get_tree().create_timer(1.0), "timeout")
print("end")
- get_frame get_frame() const
返回当前的帧号,即自应用程序启动以来的总帧数。
- get_network_connected_peers get_network_connected_peers() const
返回此SceneTree的network_peer的所有已连接对等方的对等ID。
- get_network_unique_id get_network_unique_id() const
返回此SceneTree的network_peer的唯一对等ID。
- get_node_count get_node_count() const
返回此SceneTree中的节点数。
- get_nodes_in_group get_nodes_in_group(group: String)
返回分配给给定组的所有节点的列表。
- get_rpc_sender_id get_rpc_sender_id() const
返回最近收到的RPC调用的发件人的对等ID。
- has_group has_group(name: String) const
如果给定的组存在,则返回true
。
- has_network_peer has_network_peer() const
如果设置了network_peer,则返回true
。
- is_input_handled is_input_handled()
如果最新的InputEvent被标记为使用set_input_as_handled处理,则返回true
。
- is_network_server is_network_server() const
如果此SceneTree的network_peer处于服务器模式(正在侦听连接),则返回true
。
- notify_group notify_group(group: String, notification: int)
将给定的通知发送到group
的所有成员。
- notify_group_flags notify_group_flags(call_flags: int, group: String, notification: int)
将给定的通知发送给group
的所有成员,并遵守给定的GroupCallFlags。
- queue_delete queue_delete(obj: Object)
将要删除的给定对象排队,将对Object.free的调用延迟到当前帧之后。
- quit quit(exit_code: int = -1)
退出应用程序。进程exit_code
可以选择作为参数传递。 如果此参数为0
或更大,它将在退出应用程序之前覆盖定义的OS.exit_code。
- reload_current_scene reload_current_scene()
重新加载当前活动的场景。
成功返回OK;如果尚未定义current_scene,则返回ERR_UNCONFIGURED;如果无法将current_scene加载到PackedScene中,则返回ERR_CANT_OPEN;如果无法在场景中返回,则返回ERR_CANT_CREATE实例化。
- set_auto_accept_quit set_auto_accept_quit(enabled: bool)
如果true
,应用程序将自动接受退出。
对于移动平台,请参阅set_quit_on_go_back。
- set_group set_group(group: String, property: String, value: Variant)
在给定组的所有成员上将给定的属性
设置为value
。
- set_group_flags set_group_flags(call_flags: int, group: String, property: String, value: Variant)
将给定组的所有成员上的给定属性
设置为value
,并遵守给定的GroupCallFlags。
- set_input_as_handled set_input_as_handled()
将最新的InputEvent标记为已处理。
- set_quit_on_go_back set_quit_on_go_back(enabled: bool)
如果true
为真,则应用会在返回时自动退出(例如,在Android上)。
要在禁用此选项时处理“返回”按钮,请使用MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST。
- set_screen_stretch set_screen_stretch(mode: int, aspect: int, minsize: Vector2, shrink: float = 1)
将屏幕拉伸配置为给定的StretchMode,StretchAspect,最小尺寸和缩小
比率。