:github_url: hide .. _class_VisualInstance3D: VisualInstance3D ================ **繼承:** :ref:`Node3D` **<** :ref:`Node` **<** :ref:`Object` **被繼承:** :ref:`Decal`, :ref:`FogVolume`, :ref:`GeometryInstance3D`, :ref:`GPUParticlesAttractor3D`, :ref:`GPUParticlesCollision3D`, :ref:`Light3D`, :ref:`LightmapGI`, :ref:`OccluderInstance3D`, :ref:`OpenXRVisibilityMask`, :ref:`ReflectionProbe`, :ref:`RootMotionView`, :ref:`VisibleOnScreenNotifier3D`, :ref:`VoxelGI` 所有可視 3D 節點的父節點。 .. rst-class:: classref-introduction-group 說明 ---- **VisualInstance3D** 可用於將資源連接到視覺表示。所有的視覺化 3D 節點都繼承自 **VisualInstance3D**\ 。一般來說,你不應該直接存取 **VisualInstance3D** 的屬性,因為它們是由繼承自 **VisualInstance3D** 的節點存取和管理的。\ **VisualInstance3D** 是 :ref:`RenderingServer` 實例的節點表示。 .. rst-class:: classref-reftable-group 屬性 ---- .. table:: :widths: auto +---------------------------+-----------------------------------------------------------------------------------------+-------+ | :ref:`int` | :ref:`layers` | ``1`` | +---------------------------+-----------------------------------------------------------------------------------------+-------+ | :ref:`float` | :ref:`sorting_offset` | | +---------------------------+-----------------------------------------------------------------------------------------+-------+ | :ref:`bool` | :ref:`sorting_use_aabb_center` | | +---------------------------+-----------------------------------------------------------------------------------------+-------+ .. rst-class:: classref-reftable-group 方法 ---- .. table:: :widths: auto +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`AABB` | :ref:`_get_aabb`\ (\ ) |virtual| |const| | +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`AABB` | :ref:`get_aabb`\ (\ ) |const| | +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`RID` | :ref:`get_base`\ (\ ) |const| | +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`RID` | :ref:`get_instance`\ (\ ) |const| | +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`get_layer_mask_value`\ (\ layer_number\: :ref:`int`\ ) |const| | +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_base`\ (\ base\: :ref:`RID`\ ) | +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_layer_mask_value`\ (\ layer_number\: :ref:`int`, value\: :ref:`bool`\ ) | +-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group 屬性說明 -------- .. _class_VisualInstance3D_property_layers: .. rst-class:: classref-property :ref:`int` **layers** = ``1`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_layer_mask**\ (\ value\: :ref:`int`\ ) - :ref:`int` **get_layer_mask**\ (\ ) 繪製該 **VisualInstance3D** 的算繪層。 \ :ref:`Camera3D` 的剔除遮罩包含該 **VisualInstance3D** 所設定的任何算繪層時,該物件才在該相機中可見。 對於 :ref:`Light3D`\ ,可以用於控制指定的燈光能夠影響哪些 **VisualInstance3D**\ 。對於 :ref:`GPUParticles3D`\ ,可以用於控制哪些粒子受到吸引器的影響。對於 :ref:`Decal`\ ,可以用於控制哪些 **VisualInstance3D** 受到指定裝飾的影響。 要在腳本中更加方便地調整 :ref:`layers`\ ,請使用 :ref:`get_layer_mask_value()` 和 :ref:`set_layer_mask_value()`\ 。 \ **注意:**\ :ref:`VoxelGI`\ 、SDFGI、\ :ref:`LightmapGI` 在確定全域光照影響時始終會考慮所有算繪層。如果不希望這樣,請將網格的 :ref:`GeometryInstance3D.gi_mode` 設定為 :ref:`GeometryInstance3D.GI_MODE_DISABLED`\ ,將燈光的 :ref:`Light3D.light_bake_mode` 設定為 :ref:`Light3D.BAKE_DISABLED`\ ,這樣就能從全域光照中剔除。 .. rst-class:: classref-item-separator ---- .. _class_VisualInstance3D_property_sorting_offset: .. rst-class:: classref-property :ref:`float` **sorting_offset** :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_sorting_offset**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_sorting_offset**\ (\ ) 按深度排序時該 **VisualInstance3D** 的深度將調整的量。使用與引擎相同的單位(通常是米)。將其調整為更高的值,將使 **VisualInstance3D** 可靠地繪製在位於同一位置的其他 **VisualInstance3D** 之上。為確保它始終繪製在它周圍的其他物件之上(不位於同一位置),請將值設定為大於該 **VisualInstance3D** 與附近其他 **VisualInstance3D** 之間的距離值。 .. rst-class:: classref-item-separator ---- .. _class_VisualInstance3D_property_sorting_use_aabb_center: .. rst-class:: classref-property :ref:`bool` **sorting_use_aabb_center** :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_sorting_use_aabb_center**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **is_sorting_use_aabb_center**\ (\ ) 如果為 ``true``\ ,則該物件會根據其 :ref:`AABB` 中心點排序。否則會根據其全局位置排序。 對 3D 模型而言,根據 :ref:`AABB` 的中心點排序一般更為精確。使用 :ref:`GPUParticles3D` 和 :ref:`CPUParticles3D` 時,根據位置排序能夠更好地控制繪製順序。 .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group 方法說明 -------- .. _class_VisualInstance3D_private_method__get_aabb: .. rst-class:: classref-method :ref:`AABB` **_get_aabb**\ (\ ) |virtual| |const| :ref:`🔗` .. container:: contribute There is currently no description for this method. Please help us by `contributing one `__! .. rst-class:: classref-item-separator ---- .. _class_VisualInstance3D_method_get_aabb: .. rst-class:: classref-method :ref:`AABB` **get_aabb**\ (\ ) |const| :ref:`🔗` 返回此 **VisualInstance3D** 的 :ref:`AABB`\ (也叫邊界框)。 .. rst-class:: classref-item-separator ---- .. _class_VisualInstance3D_method_get_base: .. rst-class:: classref-method :ref:`RID` **get_base**\ (\ ) |const| :ref:`🔗` 返回與此 **VisualInstance3D** 相關聯的資源的 RID。例如,如果該節點是 :ref:`MeshInstance3D`\ ,則會返回相關聯的 :ref:`Mesh` 的 RID。 .. rst-class:: classref-item-separator ---- .. _class_VisualInstance3D_method_get_instance: .. rst-class:: classref-method :ref:`RID` **get_instance**\ (\ ) |const| :ref:`🔗` 返回這個實例的 RID。這個 RID 與 :ref:`RenderingServer.instance_create()` 返回的 RID 相同。如果你想為這個 **VisualInstance3D** 直接呼叫 :ref:`RenderingServer` 函數,就需要這個 RID。 .. rst-class:: classref-item-separator ---- .. _class_VisualInstance3D_method_get_layer_mask_value: .. rst-class:: classref-method :ref:`bool` **get_layer_mask_value**\ (\ layer_number\: :ref:`int`\ ) |const| :ref:`🔗` 返回是否啟用了 :ref:`layers` 的指定層,該層由一個介於 1 和 20 之間的 ``layer_number`` 指定。 .. rst-class:: classref-item-separator ---- .. _class_VisualInstance3D_method_set_base: .. rst-class:: classref-method |void| **set_base**\ (\ base\: :ref:`RID`\ ) :ref:`🔗` 設定由該 **VisualInstance3D** 產生實體的資源,這將改變引擎在底層對該 **VisualInstance3D** 的處理方式。相當於 :ref:`RenderingServer.instance_set_base()`\ 。 .. rst-class:: classref-item-separator ---- .. _class_VisualInstance3D_method_set_layer_mask_value: .. rst-class:: classref-method |void| **set_layer_mask_value**\ (\ layer_number\: :ref:`int`, value\: :ref:`bool`\ ) :ref:`🔗` 基於 ``value``\ ,啟用或禁用 :ref:`layers` 中的指定層,該層由一個介於 1 和 20 之間的給定 ``layer_number`` 指定。 .. |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 (無回傳值。)`