Files
godot-docs-l10n/classes/zh_CN/class_editornode3dgizmo.rst
Max Hilbrunner 2ba6d25aa9 Revert "Rename zh_CN/zh_TW to zh_Hans/zh_Hant"
This reverts commit 57781dc0bc.
The rename, although in line with what we did in the engine, caused problems with RTD we need to fix (or push for a fix) first.
2025-12-24 07:14:31 +01:00

413 lines
37 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

:github_url: hide
.. _class_EditorNode3DGizmo:
EditorNode3DGizmo
=================
**继承:** :ref:`Node3DGizmo<class_Node3DGizmo>` **<** :ref:`RefCounted<class_RefCounted>` **<** :ref:`Object<class_Object>`
用于编辑 :ref:`Node3D<class_Node3D>` 对象的小工具。
.. rst-class:: classref-introduction-group
描述
----
可用于为 :ref:`Node3D<class_Node3D>` 对象提供自定义可视化和编辑功能(控柄和子小工具)的小工具。可以被覆盖以创建自定义小工具,但对于简单的小工具而言,通常建议创建 :ref:`EditorNode3DGizmoPlugin<class_EditorNode3DGizmoPlugin>`\ 。
.. rst-class:: classref-reftable-group
方法
----
.. table::
:widths: auto
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`_begin_handle_action<class_EditorNode3DGizmo_private_method__begin_handle_action>`\ (\ id\: :ref:`int<class_int>`, secondary\: :ref:`bool<class_bool>`\ ) |virtual| |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`_commit_handle<class_EditorNode3DGizmo_private_method__commit_handle>`\ (\ id\: :ref:`int<class_int>`, secondary\: :ref:`bool<class_bool>`, restore\: :ref:`Variant<class_Variant>`, cancel\: :ref:`bool<class_bool>`\ ) |virtual| |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`_commit_subgizmos<class_EditorNode3DGizmo_private_method__commit_subgizmos>`\ (\ ids\: :ref:`PackedInt32Array<class_PackedInt32Array>`, restores\: :ref:`Array<class_Array>`\[:ref:`Transform3D<class_Transform3D>`\], cancel\: :ref:`bool<class_bool>`\ ) |virtual| |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`String<class_String>` | :ref:`_get_handle_name<class_EditorNode3DGizmo_private_method__get_handle_name>`\ (\ id\: :ref:`int<class_int>`, secondary\: :ref:`bool<class_bool>`\ ) |virtual| |const| |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Variant<class_Variant>` | :ref:`_get_handle_value<class_EditorNode3DGizmo_private_method__get_handle_value>`\ (\ id\: :ref:`int<class_int>`, secondary\: :ref:`bool<class_bool>`\ ) |virtual| |const| |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Transform3D<class_Transform3D>` | :ref:`_get_subgizmo_transform<class_EditorNode3DGizmo_private_method__get_subgizmo_transform>`\ (\ id\: :ref:`int<class_int>`\ ) |virtual| |const| |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`_is_handle_highlighted<class_EditorNode3DGizmo_private_method__is_handle_highlighted>`\ (\ id\: :ref:`int<class_int>`, secondary\: :ref:`bool<class_bool>`\ ) |virtual| |const| |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`_redraw<class_EditorNode3DGizmo_private_method__redraw>`\ (\ ) |virtual| |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`_set_handle<class_EditorNode3DGizmo_private_method__set_handle>`\ (\ id\: :ref:`int<class_int>`, secondary\: :ref:`bool<class_bool>`, camera\: :ref:`Camera3D<class_Camera3D>`, point\: :ref:`Vector2<class_Vector2>`\ ) |virtual| |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`_set_subgizmo_transform<class_EditorNode3DGizmo_private_method__set_subgizmo_transform>`\ (\ id\: :ref:`int<class_int>`, transform\: :ref:`Transform3D<class_Transform3D>`\ ) |virtual| |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`PackedInt32Array<class_PackedInt32Array>` | :ref:`_subgizmos_intersect_frustum<class_EditorNode3DGizmo_private_method__subgizmos_intersect_frustum>`\ (\ camera\: :ref:`Camera3D<class_Camera3D>`, frustum\: :ref:`Array<class_Array>`\[:ref:`Plane<class_Plane>`\]\ ) |virtual| |const| |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`int<class_int>` | :ref:`_subgizmos_intersect_ray<class_EditorNode3DGizmo_private_method__subgizmos_intersect_ray>`\ (\ camera\: :ref:`Camera3D<class_Camera3D>`, point\: :ref:`Vector2<class_Vector2>`\ ) |virtual| |const| |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`add_collision_segments<class_EditorNode3DGizmo_method_add_collision_segments>`\ (\ segments\: :ref:`PackedVector3Array<class_PackedVector3Array>`\ ) |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`add_collision_triangles<class_EditorNode3DGizmo_method_add_collision_triangles>`\ (\ triangles\: :ref:`TriangleMesh<class_TriangleMesh>`\ ) |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`add_handles<class_EditorNode3DGizmo_method_add_handles>`\ (\ handles\: :ref:`PackedVector3Array<class_PackedVector3Array>`, material\: :ref:`Material<class_Material>`, ids\: :ref:`PackedInt32Array<class_PackedInt32Array>`, billboard\: :ref:`bool<class_bool>` = false, secondary\: :ref:`bool<class_bool>` = false\ ) |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`add_lines<class_EditorNode3DGizmo_method_add_lines>`\ (\ lines\: :ref:`PackedVector3Array<class_PackedVector3Array>`, material\: :ref:`Material<class_Material>`, billboard\: :ref:`bool<class_bool>` = false, modulate\: :ref:`Color<class_Color>` = Color(1, 1, 1, 1)\ ) |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`add_mesh<class_EditorNode3DGizmo_method_add_mesh>`\ (\ mesh\: :ref:`Mesh<class_Mesh>`, material\: :ref:`Material<class_Material>` = null, transform\: :ref:`Transform3D<class_Transform3D>` = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0), skeleton\: :ref:`SkinReference<class_SkinReference>` = null\ ) |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`add_unscaled_billboard<class_EditorNode3DGizmo_method_add_unscaled_billboard>`\ (\ material\: :ref:`Material<class_Material>`, default_scale\: :ref:`float<class_float>` = 1, modulate\: :ref:`Color<class_Color>` = Color(1, 1, 1, 1)\ ) |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`clear<class_EditorNode3DGizmo_method_clear>`\ (\ ) |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`Node3D<class_Node3D>` | :ref:`get_node_3d<class_EditorNode3DGizmo_method_get_node_3d>`\ (\ ) |const| |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`EditorNode3DGizmoPlugin<class_EditorNode3DGizmoPlugin>` | :ref:`get_plugin<class_EditorNode3DGizmo_method_get_plugin>`\ (\ ) |const| |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`PackedInt32Array<class_PackedInt32Array>` | :ref:`get_subgizmo_selection<class_EditorNode3DGizmo_method_get_subgizmo_selection>`\ (\ ) |const| |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| :ref:`bool<class_bool>` | :ref:`is_subgizmo_selected<class_EditorNode3DGizmo_method_is_subgizmo_selected>`\ (\ id\: :ref:`int<class_int>`\ ) |const| |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_hidden<class_EditorNode3DGizmo_method_set_hidden>`\ (\ hidden\: :ref:`bool<class_bool>`\ ) |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_node_3d<class_EditorNode3DGizmo_method_set_node_3d>`\ (\ node\: :ref:`Node<class_Node>`\ ) |
+---------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
方法说明
--------
.. _class_EditorNode3DGizmo_private_method__begin_handle_action:
.. rst-class:: classref-method
|void| **_begin_handle_action**\ (\ id\: :ref:`int<class_int>`, secondary\: :ref:`bool<class_bool>`\ ) |virtual| :ref:`🔗<class_EditorNode3DGizmo_private_method__begin_handle_action>`
.. container:: contribute
There is currently no description for this method. Please help us by `contributing one <https://contributing.godotengine.org/en/latest/documentation/class_reference.html>`__!
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_private_method__commit_handle:
.. rst-class:: classref-method
|void| **_commit_handle**\ (\ id\: :ref:`int<class_int>`, secondary\: :ref:`bool<class_bool>`, restore\: :ref:`Variant<class_Variant>`, cancel\: :ref:`bool<class_bool>`\ ) |virtual| :ref:`🔗<class_EditorNode3DGizmo_private_method__commit_handle>`
覆盖该方法,以提交一个正在编辑的控柄(控柄必须是之前通过 :ref:`add_handles()<class_EditorNode3DGizmo_method_add_handles>` 添加的)。这通常意味着为该修改创建一个 :ref:`UndoRedo<class_UndoRedo>` 动作,将当前控柄值用作“做”,并将 ``restore`` 参数用作“撤销”。
如果 ``cancel`` 参数为 ``true``\ ,则应直接设置 ``restore`` 值,而不需要任何 :ref:`UndoRedo<class_UndoRedo>` 动作。
当提交的控柄为次要控柄时,\ ``secondary`` 参数为 ``true``\ (有关更多信息,请参阅 :ref:`add_handles()<class_EditorNode3DGizmo_method_add_handles>`\ )。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_private_method__commit_subgizmos:
.. rst-class:: classref-method
|void| **_commit_subgizmos**\ (\ ids\: :ref:`PackedInt32Array<class_PackedInt32Array>`, restores\: :ref:`Array<class_Array>`\[:ref:`Transform3D<class_Transform3D>`\], cancel\: :ref:`bool<class_bool>`\ ) |virtual| :ref:`🔗<class_EditorNode3DGizmo_private_method__commit_subgizmos>`
覆盖该方法,以提交一组正在编辑的子小工具(参见 :ref:`_subgizmos_intersect_ray()<class_EditorNode3DGizmo_private_method__subgizmos_intersect_ray>` 和 :ref:`_subgizmos_intersect_frustum()<class_EditorNode3DGizmo_private_method__subgizmos_intersect_frustum>`\ )。这通常意味着为该更改创建一个 :ref:`UndoRedo<class_UndoRedo>` 动作,将当前变换用作“做”,并将 ``restores`` 变换用作“撤消”。
如果 ``cancel`` 参数为 ``true``\ ,则\ ``restores`` 变换应被直接设置 ,而无需任何 :ref:`UndoRedo<class_UndoRedo>` 动作。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_private_method__get_handle_name:
.. rst-class:: classref-method
:ref:`String<class_String>` **_get_handle_name**\ (\ id\: :ref:`int<class_int>`, secondary\: :ref:`bool<class_bool>`\ ) |virtual| |const| :ref:`🔗<class_EditorNode3DGizmo_private_method__get_handle_name>`
覆盖该方法,以返回编辑的控柄的名称(控柄必须先前通过 :ref:`add_handles()<class_EditorNode3DGizmo_method_add_handles>` 添加的)。可以命名控柄以供用户在编辑时引用。
当请求的控柄是次要控柄时,\ ``secondary`` 参数为 ``true``\ (有关更多信息,请参阅 :ref:`add_handles()<class_EditorNode3DGizmo_method_add_handles>`\ )。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_private_method__get_handle_value:
.. rst-class:: classref-method
:ref:`Variant<class_Variant>` **_get_handle_value**\ (\ id\: :ref:`int<class_int>`, secondary\: :ref:`bool<class_bool>`\ ) |virtual| |const| :ref:`🔗<class_EditorNode3DGizmo_private_method__get_handle_value>`
覆盖该方法,以返回一个控柄的当前值。该值将在编辑开始时被请求,并用作 :ref:`_commit_handle()<class_EditorNode3DGizmo_private_method__commit_handle>` 中的 ``restore`` 参数。
当请求的控柄是次要控柄时,\ ``secondary`` 参数为 ``true``\ (有关更多信息,请参阅 :ref:`add_handles()<class_EditorNode3DGizmo_method_add_handles>`\ )。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_private_method__get_subgizmo_transform:
.. rst-class:: classref-method
:ref:`Transform3D<class_Transform3D>` **_get_subgizmo_transform**\ (\ id\: :ref:`int<class_int>`\ ) |virtual| |const| :ref:`🔗<class_EditorNode3DGizmo_private_method__get_subgizmo_transform>`
覆盖该方法,以返回子小工具的当前变换。该变换将在编辑开始时被请求,并用作 :ref:`_commit_subgizmos()<class_EditorNode3DGizmo_private_method__commit_subgizmos>` 中的 ``restore`` 参数。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_private_method__is_handle_highlighted:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **_is_handle_highlighted**\ (\ id\: :ref:`int<class_int>`, secondary\: :ref:`bool<class_bool>`\ ) |virtual| |const| :ref:`🔗<class_EditorNode3DGizmo_private_method__is_handle_highlighted>`
覆盖该方法,只要给定的控柄应该在编辑器中被高亮显示时就返回 ``true``\ 。
当请求的控柄是次要控柄时,\ ``secondary`` 参数为 ``true``\ (有关更多信息,请参阅 :ref:`add_handles()<class_EditorNode3DGizmo_method_add_handles>`\ )。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_private_method__redraw:
.. rst-class:: classref-method
|void| **_redraw**\ (\ ) |virtual| :ref:`🔗<class_EditorNode3DGizmo_private_method__redraw>`
覆盖该方法,每当请求小工具更新时将添加所有小工具元素。通常在该方法的开头调用 :ref:`clear()<class_EditorNode3DGizmo_method_clear>`\ ,然后根据节点的属性添加可视元素。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_private_method__set_handle:
.. rst-class:: classref-method
|void| **_set_handle**\ (\ id\: :ref:`int<class_int>`, secondary\: :ref:`bool<class_bool>`, camera\: :ref:`Camera3D<class_Camera3D>`, point\: :ref:`Vector2<class_Vector2>`\ ) |virtual| :ref:`🔗<class_EditorNode3DGizmo_private_method__set_handle>`
覆盖该方法,当用户拖动小工具控柄(之前使用 :ref:`add_handles()<class_EditorNode3DGizmo_method_add_handles>` 添加的)时更新节点属性。提供的 ``point`` 是屏幕坐标中的鼠标位置, ``camera`` 可用于将其转换为射线投射。
当编辑的控柄是次要控柄时,\ ``secondary`` 参数为 ``true``\ (有关更多信息,请参阅 :ref:`add_handles()<class_EditorNode3DGizmo_method_add_handles>`\ )。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_private_method__set_subgizmo_transform:
.. rst-class:: classref-method
|void| **_set_subgizmo_transform**\ (\ id\: :ref:`int<class_int>`, transform\: :ref:`Transform3D<class_Transform3D>`\ ) |virtual| :ref:`🔗<class_EditorNode3DGizmo_private_method__set_subgizmo_transform>`
覆盖该方法,以在子小工具编辑期间更新节点属性(参见 :ref:`_subgizmos_intersect_ray()<class_EditorNode3DGizmo_private_method__subgizmos_intersect_ray>` 和 :ref:`_subgizmos_intersect_frustum()<class_EditorNode3DGizmo_private_method__subgizmos_intersect_frustum>`\ )。\ ``transform`` 是在 :ref:`Node3D<class_Node3D>` 的局部坐标系中给出的。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_private_method__subgizmos_intersect_frustum:
.. rst-class:: classref-method
:ref:`PackedInt32Array<class_PackedInt32Array>` **_subgizmos_intersect_frustum**\ (\ camera\: :ref:`Camera3D<class_Camera3D>`, frustum\: :ref:`Array<class_Array>`\[:ref:`Plane<class_Plane>`\]\ ) |virtual| |const| :ref:`🔗<class_EditorNode3DGizmo_private_method__subgizmos_intersect_frustum>`
覆盖该方法,以允许使用鼠标拖动框选来选择子小工具。给定一个 ``camera`` 和一个 ``frustum``\ ,这个方法应该返回哪些子小工具包含在锥体中。\ ``frustum`` 参数由一个数组组成,其中包含构成选择锥体的所有 :ref:`Plane<class_Plane>`\ 。返回的值应该包含一个唯一的子小工具标识符列表,它可以有任何非负值,并将用于其他虚方法,如 :ref:`_get_subgizmo_transform()<class_EditorNode3DGizmo_private_method__get_subgizmo_transform>`:ref:`_commit_subgizmos()<class_EditorNode3DGizmo_private_method__commit_subgizmos>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_private_method__subgizmos_intersect_ray:
.. rst-class:: classref-method
:ref:`int<class_int>` **_subgizmos_intersect_ray**\ (\ camera\: :ref:`Camera3D<class_Camera3D>`, point\: :ref:`Vector2<class_Vector2>`\ ) |virtual| |const| :ref:`🔗<class_EditorNode3DGizmo_private_method__subgizmos_intersect_ray>`
覆盖该方法,以允许使用鼠标点击选择子小工具。给定屏幕坐标中的 ``camera````point`` 时,该方法应返回应选择哪个子小工具。返回值应该是一个唯一的子小工具标识符,它可以有任何非负值,并将用于其他虚方法,如 :ref:`_get_subgizmo_transform()<class_EditorNode3DGizmo_private_method__get_subgizmo_transform>`:ref:`_commit_subgizmos()<class_EditorNode3DGizmo_private_method__commit_subgizmos>`\ 。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_method_add_collision_segments:
.. rst-class:: classref-method
|void| **add_collision_segments**\ (\ segments\: :ref:`PackedVector3Array<class_PackedVector3Array>`\ ) :ref:`🔗<class_EditorNode3DGizmo_method_add_collision_segments>`
将指定的 ``segments`` 添加到小工具的碰撞形状以进行拾取。在 :ref:`_redraw()<class_EditorNode3DGizmo_private_method__redraw>` 期间调用该方法。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_method_add_collision_triangles:
.. rst-class:: classref-method
|void| **add_collision_triangles**\ (\ triangles\: :ref:`TriangleMesh<class_TriangleMesh>`\ ) :ref:`🔗<class_EditorNode3DGizmo_method_add_collision_triangles>`
将碰撞三角形添加到小工具以进行拾取。\ :ref:`TriangleMesh<class_TriangleMesh>` 也可以从常规 :ref:`Mesh<class_Mesh>` 生成。在 :ref:`_redraw()<class_EditorNode3DGizmo_private_method__redraw>` 期间调用该方法。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_method_add_handles:
.. rst-class:: classref-method
|void| **add_handles**\ (\ handles\: :ref:`PackedVector3Array<class_PackedVector3Array>`, material\: :ref:`Material<class_Material>`, ids\: :ref:`PackedInt32Array<class_PackedInt32Array>`, billboard\: :ref:`bool<class_bool>` = false, secondary\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_EditorNode3DGizmo_method_add_handles>`
添加可用于编辑该小工具的 :ref:`Node3D<class_Node3D>` 属性的一组控柄(点)。\ ``ids`` 参数可用于为每个控柄指定一个自定义的标识符如果传递了一个空的数组id 将按照 ``handles`` 参数顺序自动分配。
\ ``secondary`` 参数将添加的控柄标记为次要控柄,这意味着它们通常比普通控柄具有更低的选择优先级。当用户按住 Shift 键时,次要控柄将被切换为比普通控柄具有更高的优先级。这种优先级的变化可用于在同一点放置多个控柄,同时仍让用户控制他们的选择。
这些虚方法将在编辑这些控柄时被调用。在 :ref:`_redraw()<class_EditorNode3DGizmo_private_method__redraw>` 期间将调用该方法。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_method_add_lines:
.. rst-class:: classref-method
|void| **add_lines**\ (\ lines\: :ref:`PackedVector3Array<class_PackedVector3Array>`, material\: :ref:`Material<class_Material>`, billboard\: :ref:`bool<class_bool>` = false, modulate\: :ref:`Color<class_Color>` = Color(1, 1, 1, 1)\ ) :ref:`🔗<class_EditorNode3DGizmo_method_add_lines>`
为小工具添加使用给定材质的线段(一对对点的集合)。线段将用于展示和选择。请在 :ref:`_redraw()<class_EditorNode3DGizmo_private_method__redraw>` 期间调用此方法。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_method_add_mesh:
.. rst-class:: classref-method
|void| **add_mesh**\ (\ mesh\: :ref:`Mesh<class_Mesh>`, material\: :ref:`Material<class_Material>` = null, transform\: :ref:`Transform3D<class_Transform3D>` = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0), skeleton\: :ref:`SkinReference<class_SkinReference>` = null\ ) :ref:`🔗<class_EditorNode3DGizmo_method_add_mesh>`
为小工具添加网格,可以指定材质 ``material``\ 、本地变换 ``transform`` 和骨架 ``skeleton``\ 。请在 :ref:`_redraw()<class_EditorNode3DGizmo_private_method__redraw>` 期间调用此方法。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_method_add_unscaled_billboard:
.. rst-class:: classref-method
|void| **add_unscaled_billboard**\ (\ material\: :ref:`Material<class_Material>`, default_scale\: :ref:`float<class_float>` = 1, modulate\: :ref:`Color<class_Color>` = Color(1, 1, 1, 1)\ ) :ref:`🔗<class_EditorNode3DGizmo_method_add_unscaled_billboard>`
添加未缩放的公告板,将用于展示和选择。请在 :ref:`_redraw()<class_EditorNode3DGizmo_private_method__redraw>` 期间调用此方法。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_method_clear:
.. rst-class:: classref-method
|void| **clear**\ (\ ) :ref:`🔗<class_EditorNode3DGizmo_method_clear>`
移除小工具中的一切,包括网格、碰撞和控柄。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_method_get_node_3d:
.. rst-class:: classref-method
:ref:`Node3D<class_Node3D>` **get_node_3d**\ (\ ) |const| :ref:`🔗<class_EditorNode3DGizmo_method_get_node_3d>`
返回与这个小工具关联的 :ref:`Node3D<class_Node3D>` 节点。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_method_get_plugin:
.. rst-class:: classref-method
:ref:`EditorNode3DGizmoPlugin<class_EditorNode3DGizmoPlugin>` **get_plugin**\ (\ ) |const| :ref:`🔗<class_EditorNode3DGizmo_method_get_plugin>`
返回拥有该小工具的 :ref:`EditorNode3DGizmoPlugin<class_EditorNode3DGizmoPlugin>`\ 。可以在使用 :ref:`EditorNode3DGizmoPlugin.get_material()<class_EditorNode3DGizmoPlugin_method_get_material>` 获取材质时使用。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_method_get_subgizmo_selection:
.. rst-class:: classref-method
:ref:`PackedInt32Array<class_PackedInt32Array>` **get_subgizmo_selection**\ (\ ) |const| :ref:`🔗<class_EditorNode3DGizmo_method_get_subgizmo_selection>`
返回当前选定的子小工具的列表。可用于在 :ref:`_redraw()<class_EditorNode3DGizmo_private_method__redraw>` 期间高亮显示所选元素。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_method_is_subgizmo_selected:
.. rst-class:: classref-method
:ref:`bool<class_bool>` **is_subgizmo_selected**\ (\ id\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_EditorNode3DGizmo_method_is_subgizmo_selected>`
如果给定的子小工具是当前所选定的,则返回 ``true``\ 。可用于在 :ref:`_redraw()<class_EditorNode3DGizmo_private_method__redraw>` 期间高亮显示所选元素。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_method_set_hidden:
.. rst-class:: classref-method
|void| **set_hidden**\ (\ hidden\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_EditorNode3DGizmo_method_set_hidden>`
设置该小工具的隐藏状态。如果为 ``true``\ ,则该小工具将被隐藏。如果为 ``false`` 则会显示。
.. rst-class:: classref-item-separator
----
.. _class_EditorNode3DGizmo_method_set_node_3d:
.. rst-class:: classref-method
|void| **set_node_3d**\ (\ node\: :ref:`Node<class_Node>`\ ) :ref:`🔗<class_EditorNode3DGizmo_method_set_node_3d>`
设置该小工具参考的 :ref:`Node3D<class_Node3D>` 节点。\ ``node`` 必须继承自 :ref:`Node3D<class_Node3D>`\ 。
.. |virtual| replace:: :abbr:`virtual (本方法通常需要用户覆盖才能生效。)`
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
.. |const| replace:: :abbr:`const (本方法无副作用,不会修改该实例的任何成员变量。)`
.. |vararg| replace:: :abbr:`vararg (本方法除了能接受在此处描述的参数外,还能够继续接受任意数量的参数。)`
.. |constructor| replace:: :abbr:`constructor (本方法用于构造某个类型。)`
.. |static| replace:: :abbr:`static (调用本方法无需实例,可直接使用类名进行调用。)`
.. |operator| replace:: :abbr:`operator (本方法描述的是使用本类型作为左操作数的有效运算符。)`
.. |bitfield| replace:: :abbr:`BitField (这个值是由下列位标志构成位掩码的整数。)`
.. |void| replace:: :abbr:`void (无返回值。)`