Viewport
派生: SubViewport, Window
视口的抽象基类。对绘图以及与游戏世界的交互进行了封装。
描述
Viewport 在屏幕中创建不同的视图,或在另一个视口内创建子视图。子 2D 节点将显示在其上,子 Camera3D 3D 节点也将在其上渲染。
视口也可以拥有自己的 2D 或 3D 世界,这样就不会与其他视口共享绘制的内容。
视口也可以选择作为音频监听器,这样就可以根据 2D 或 3D 相机子节点生成位置音频。
另外,在设备有多个屏幕的情况下,可以将视口分配给不同的屏幕。
最后,视口也可以充当渲染目标,在这种情况下,除非使用与其相关联的纹理进行绘制,否则它们将不可见。
教程
属性
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
physics_interpolation_mode |
|
|
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
方法
信号
gui_focus_changed(node: Control) 🔗
当控件节点获取键盘焦点时触发。
注意:控件节点失去焦点不会导致触发该信号。
size_changed() 🔗
当视口的大小被改变时发出,无论是通过调整窗口大小,还是通过其他方式改变的大小。
枚举
enum PositionalShadowAtlasQuadrantSubdiv: 🔗
PositionalShadowAtlasQuadrantSubdiv SHADOW_ATLAS_QUADRANT_SUBDIV_DISABLED = 0
不使用该象限。
PositionalShadowAtlasQuadrantSubdiv SHADOW_ATLAS_QUADRANT_SUBDIV_1 = 1
该象限仅由一张阴影贴图使用。
PositionalShadowAtlasQuadrantSubdiv SHADOW_ATLAS_QUADRANT_SUBDIV_4 = 2
该象限将被分为 4 份,最多被 4 张阴影贴图使用。
PositionalShadowAtlasQuadrantSubdiv SHADOW_ATLAS_QUADRANT_SUBDIV_16 = 3
该象限将被分为 16 份,最多被 16 张阴影贴图使用。
PositionalShadowAtlasQuadrantSubdiv SHADOW_ATLAS_QUADRANT_SUBDIV_64 = 4
该象限将被分为 64 份,最多被 64 张阴影贴图使用。
PositionalShadowAtlasQuadrantSubdiv SHADOW_ATLAS_QUADRANT_SUBDIV_256 = 5
该象限将被分为 256 份,最多被 256 张阴影贴图使用。除非 positional_shadow_atlas_size 非常高,否则该象限中的阴影分辨率将非常低。
PositionalShadowAtlasQuadrantSubdiv SHADOW_ATLAS_QUADRANT_SUBDIV_1024 = 6
该象限将被分为 1024 份,最多被 1024 张阴影贴图使用。除非 positional_shadow_atlas_size 非常高,否则该象限中的阴影分辨率将非常低。
PositionalShadowAtlasQuadrantSubdiv SHADOW_ATLAS_QUADRANT_SUBDIV_MAX = 7
代表 PositionalShadowAtlasQuadrantSubdiv 枚举的大小。
enum Scaling3DMode: 🔗
Scaling3DMode SCALING_3D_MODE_BILINEAR = 0
对该视口的 3D 缓冲区使用双线性缩放。缩放的程度可以使用 scaling_3d_scale 设置。小于 1.0 的值会产生欠采样的效果,大于 1.0 会产生超采样的效果。值为 1.0 时禁用缩放。
Scaling3DMode SCALING_3D_MODE_FSR = 1
对该视口的 3D 缓冲区使用 AMD FidelityFX 超分辨率 1.0 升采样技术。缩放的程度可以使用 scaling_3d_scale 设置。小于 1.0 的值会使用 FSR 进行放大。不支持大于 1.0 的值,会改用双线性降采样。值为 1.0 时禁用缩放。
Scaling3DMode SCALING_3D_MODE_FSR2 = 2
对视口的 3D 缓冲区使用 AMD FidelityFX 超分辨率 2.2 放大。可以使用 scaling_3d_scale 设置缩放量。小于 1.0 的值将导致使用 FSR2 放大视口。不支持大于 1.0 的值,将改用双线性降采样。1.0 的值将使用原生分辨率下的 FSR2 作为 TAA 解决方案。
Scaling3DMode SCALING_3D_MODE_METALFX_SPATIAL = 3
对视口的 3D 缓冲区使用 MetalFX 空间图像放大器。
可以使用 scaling_3d_scale 设置缩放量。
小于 1.0 的值将导致使用 MetalFX 放大视口。不支持大于 1.0 的值,将改用双线性降采样。1.0 的值将禁用缩放。
更多信息:MetalFX。
注意:仅在使用 Metal 渲染驱动时支持,因此该缩放模式仅限 macOS 和 iOS 使用。
Scaling3DMode SCALING_3D_MODE_METALFX_TEMPORAL = 4
对视口的 3D 缓冲区使用 MetalFX 时间图像放大器。
可以使用 scaling_3d_scale 设置缩放量。确定最小的输入缩放请在调用 RenderingDevice.limit_get() 时使用 RenderingDevice.LIMIT_METALFX_TEMPORAL_SCALER_MIN_SCALE。
小于 1.0 的值将导致使用 MetalFX 放大视口。不支持大于 1.0 的值,将改用双线性降采样。1.0 的值将在原生分辨率使用 MetalFX 作为 TAA 的解决方案。
更多信息:MetalFX。
注意:仅在使用 Metal 渲染驱动时支持,因此该缩放模式仅限 macOS 和 iOS 使用。
Scaling3DMode SCALING_3D_MODE_MAX = 5
代表 Scaling3DMode 枚举的大小。
enum MSAA: 🔗
MSAA MSAA_DISABLED = 0
禁用多重采样抗锯齿模式。这是默认值,也是最快的设置。
MSAA MSAA_2X = 1
使用 2 倍多重采样抗锯齿。性能成本中等。有助于显着减少锯齿,但 4× MSAA 看起来仍然要好得多。
MSAA MSAA_4X = 2
使用 4 倍多重采样抗锯齿。性能成本显著,通常是性能和质量之间的良好折衷。
MSAA MSAA_8X = 3
使用 8 倍多重采样抗锯齿。性能成本极高。在实际游戏条件下,4× 和 8× MSAA 之间的差异可能并不总是可见的。可能在低端和较旧的硬件上不受支持。
MSAA MSAA_MAX = 4
代表 MSAA 枚举的大小。
enum AnisotropicFiltering: 🔗
AnisotropicFiltering ANISOTROPY_DISABLED = 0
各向异性过滤已禁用。
AnisotropicFiltering ANISOTROPY_2X = 1
使用 2× 各向异性过滤。
AnisotropicFiltering ANISOTROPY_4X = 2
使用 4× 各向异性过滤。这是默认值。
AnisotropicFiltering ANISOTROPY_8X = 3
使用 8× 各向异性过滤。
AnisotropicFiltering ANISOTROPY_16X = 4
使用 16× 各向异性过滤。
AnisotropicFiltering ANISOTROPY_MAX = 5
代表 AnisotropicFiltering 枚举的大小。
enum ScreenSpaceAA: 🔗
ScreenSpaceAA SCREEN_SPACE_AA_DISABLED = 0
不要在全屏后处理中执行抗锯齿。
ScreenSpaceAA SCREEN_SPACE_AA_FXAA = 1
使用快速近似抗锯齿(Fast Approximate Anti-Aliasing)。FXAA 是一种流行的屏幕空间抗锯齿方法,速度很快,但会让图像变模糊,使用较低分辨率时尤为显著。1440p 和 4K 等较高分辨率下效果仍然不错。
ScreenSpaceAA SCREEN_SPACE_AA_SMAA = 2
使用次像素形态抗锯齿。SMAA 得到的结果可能比 FXAA 更清晰,但是性能开销会稍微高一些。
ScreenSpaceAA SCREEN_SPACE_AA_MAX = 3
代表 ScreenSpaceAA 枚举的大小。
enum RenderInfo: 🔗
RenderInfo RENDER_INFO_OBJECTS_IN_FRAME = 0
帧中对象的数量。
RenderInfo RENDER_INFO_PRIMITIVES_IN_FRAME = 1
帧中的顶点数量。
RenderInfo RENDER_INFO_DRAW_CALLS_IN_FRAME = 2
帧中的绘制调用量。
RenderInfo RENDER_INFO_MAX = 3
代表 RenderInfo 枚举的大小。
enum RenderInfoType: 🔗
RenderInfoType RENDER_INFO_TYPE_VISIBLE = 0
可见渲染阶段(不含阴影)。
RenderInfoType RENDER_INFO_TYPE_SHADOW = 1
阴影渲染阶段。根据开启了阴影的灯光数以及方向阴影的拆分数,同一个对象可能会渲染多次。
RenderInfoType RENDER_INFO_TYPE_CANVAS = 2
画布项渲染。包括所有 2D 渲染。
RenderInfoType RENDER_INFO_TYPE_MAX = 3
代表 RenderInfoType 枚举的大小。
enum DebugDraw: 🔗
DebugDraw DEBUG_DRAW_DISABLED = 0
对象正常显示。
DebugDraw DEBUG_DRAW_UNSHADED = 1
显示的对象没有光照信息。
DebugDraw DEBUG_DRAW_LIGHTING = 2
对象不使用纹理,只使用光照信息显示。
注意:使用该调试绘图模式时,场景中的所有材质都会暂时使用调试材质,因此会忽略自定义着色器。这意味着使用该调试绘图模式时,自定义着色器函数的结果(例如顶点位移)不再可见。
DebugDraw DEBUG_DRAW_OVERDRAW = 3
对象通过加法混合显示为半透明,因此可以看到它们在彼此之上绘制的位置。更高的过度绘制(由更亮的颜色表示)意味着在绘制隐藏在其他像素后面的像素时浪费了性能。
注意:使用该调试绘图模式时,场景中的所有材质都会暂时使用调试材质,因此会忽略自定义着色器。这意味着使用该调试绘图模式时,自定义着色器函数的结果(例如顶点位移)不再可见。
DebugDraw DEBUG_DRAW_WIREFRAME = 4
对象以线框模型的形式显示。
注意:使用 Compatibility 渲染器时,必须先调用 RenderingServer.set_debug_generate_wireframes(),然后再加载网格,才能显示线框。
DebugDraw DEBUG_DRAW_NORMAL_BUFFER = 5
显示对象时不使用光照信息,将纹理替换为法线贴图。
注意:仅在使用 Forward+ 渲染方法时支持。
DebugDraw DEBUG_DRAW_VOXEL_GI_ALBEDO = 6
对象只使用 VoxelGI 中的反照率值显示。要求至少存在一个可见且已烘焙的 VoxelGI 节点,才能有可见的效果。
注意:仅在使用 Forward+ 渲染方法时支持。
DebugDraw DEBUG_DRAW_VOXEL_GI_LIGHTING = 7
对象只使用 VoxelGI 中的光照值显示。要求至少存在一个可见且已烘焙的 VoxelGI 节点,才能有可见的效果。
注意:仅在使用 Forward+ 渲染方法时支持。
DebugDraw DEBUG_DRAW_VOXEL_GI_EMISSION = 8
对象只使用 VoxelGI 中的发光颜色显示。要求至少存在一个可见且已烘焙的 VoxelGI 节点,才能有可见的效果。
注意:仅在使用 Forward+ 渲染方法时支持。
DebugDraw DEBUG_DRAW_SHADOW_ATLAS = 9
在 Viewport 的左上象限中绘制存储来自 OmniLight3D 和 SpotLight3D 的阴影的阴影图集。
DebugDraw DEBUG_DRAW_DIRECTIONAL_SHADOW_ATLAS = 10
在 Viewport 的左上象限中绘制存储来自 DirectionalLight3D 的阴影的阴影图集。
DebugDraw DEBUG_DRAW_SCENE_LUMINANCE = 11
在 Viewport 的左上象限中绘制场景亮度缓冲(如果可用)。
注意:仅在使用 Forward+ 或 Mobile 渲染方法时支持。
DebugDraw DEBUG_DRAW_SSAO = 12
绘制屏幕空间环境光遮蔽纹理而不是场景,以便可以清楚地看到它是如何影响对象的。为了使该显示模式起作用,必须在 WorldEnvironment 中设置 Environment.ssao_enabled。
注意:仅在使用 Forward+ 渲染方法时支持。
DebugDraw DEBUG_DRAW_SSIL = 13
绘制屏幕空间间接照明纹理而不是场景,以便可以清楚地看到它是如何影响对象的。为了使该显示模式起作用,必须在 WorldEnvironment 中设置 Environment.ssil_enabled。
注意:仅在使用 Forward+ 渲染方法时支持。
DebugDraw DEBUG_DRAW_PSSM_SPLITS = 14
将场景中 DirectionalLight3D 的各个 PSSM 拆分用不同的颜色着色,便于查看拆分的位置。着色(按照距离相机由近到远)的顺序为红、绿、蓝、黄。
注意:使用该调试绘图模式时,场景中的所有材质都会暂时使用调试材质,因此会忽略自定义着色器。这意味着使用该调试绘图模式时,自定义着色器函数的结果(例如顶点位移)不再可见。
注意:仅在使用 Forward+ 或 Mobile 渲染方法时支持。
DebugDraw DEBUG_DRAW_DECAL_ATLAS = 15
在 Viewport 的左上象限中绘制 Decal 使用的贴花和光投影仪的纹理。
注意:仅在使用 Forward+ 或 Mobile 渲染方法时支持。
DebugDraw DEBUG_DRAW_SDFGI = 16
绘制用于渲染带符号距离场全局光照(SDFGI)的级联。
如果当前环境的 Environment.sdfgi_enabled 为 false 或平台不支持 SDFGI,则不执行任何操作。
注意:仅在使用 Forward+ 渲染方法时支持。
DebugDraw DEBUG_DRAW_SDFGI_PROBES = 17
绘制用于带符号距离场全局照明(SDFGI)的探测器。
如果当前环境的 Environment.sdfgi_enabled 为 false 或平台不支持 SDFGI,则不执行任何操作。
注意:仅在使用 Forward+ 渲染方法时支持。
DebugDraw DEBUG_DRAW_GI_BUFFER = 18
绘制用于 VoxelGI 或 SDFGI 全局光照的缓冲。需要启用 VoxelGI(至少有一个可见的已烘焙 VoxelGI 节点)或 SDFGI(Environment.sdfgi_enabled)才能有可见的效果。
注意:仅在使用 Forward+ 渲染方法时支持。
DebugDraw DEBUG_DRAW_DISABLE_LOD = 19
使用最高多边形数绘制对象,忽略与相机的距离。不应用低细节层次(LOD)。
DebugDraw DEBUG_DRAW_CLUSTER_OMNI_LIGHTS = 20
绘制 OmniLight3D 节点所使用的集群,用于优化光照渲染。
注意:仅在使用 Forward+ 渲染方法时支持。
DebugDraw DEBUG_DRAW_CLUSTER_SPOT_LIGHTS = 21
绘制 SpotLight3D 节点所使用的集群,用于优化光照渲染。
注意:仅在使用 Forward+ 渲染方法时支持。
DebugDraw DEBUG_DRAW_CLUSTER_DECALS = 22
绘制 Decal 节点所使用的集群,用于优化贴花渲染。
注意:仅在使用 Forward+ 渲染方法时支持。
DebugDraw DEBUG_DRAW_CLUSTER_REFLECTION_PROBES = 23
绘制 ReflectionProbe 节点所使用的集群,用于优化反射探针。
注意:仅在使用 Forward+ 渲染方法时支持。
DebugDraw DEBUG_DRAW_OCCLUDERS = 24
绘制遮挡剔除所使用的缓冲。
注意:仅在使用 Forward+ 或 Mobile 渲染方法时支持。
DebugDraw DEBUG_DRAW_MOTION_VECTORS = 25
在视口中绘制向量线条,表示相邻两帧之间像素的移动。
注意:仅在使用 Forward+ 渲染方法时支持。
DebugDraw DEBUG_DRAW_INTERNAL_BUFFER = 26
在应用色调映射或后期处理之前,以线性色彩空间绘制场景的内部分辨率缓冲区。
注意:仅在使用 Forward+ 或 Mobile 渲染方式时有效。
enum DefaultCanvasItemTextureFilter: 🔗
DefaultCanvasItemTextureFilter DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_NEAREST = 0
纹理过滤仅从最近的像素读取。这使得纹理从近距离看是像素化的,从远处看是颗粒状的(由于多级渐远纹理没有被采样)。
DefaultCanvasItemTextureFilter DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_LINEAR = 1
纹理过滤在最近的 4 个像素之间进行混合。这使得纹理从近处看起来很平滑,从远处看起来却有颗粒感(由于多级渐远纹理没有被采样)。
DefaultCanvasItemTextureFilter DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS = 2
纹理过滤在最近的 4 个像素和最近的 2 个多级渐远纹理之间进行混合(或者如果 ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter 为 true,则使用最近的多级渐远纹理)。这使得纹理从近处看起来平滑,从远处看起来也平滑。
将此用于可能以低缩放查看的非像素艺术纹理(例如,由于 Camera2D 缩放或精灵缩放),因为多级渐远纹理对于平滑小于屏幕像素的像素很重要。
DefaultCanvasItemTextureFilter DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS = 3
纹理过滤从最近的像素读取并在最近的 2 个多级渐远纹理之间进行混合(或者如果 ProjectSettings.rendering/textures/default_filters/use_nearest_mipmap_filter 为 true,则使用最近的多级渐远纹理)。这使得纹理从近处看起来像素化,从远处看起来平滑。
将此用于可能以低缩放查看的非像素艺术纹理(例如,由于 Camera2D 缩放或精灵缩放),因为多级渐远纹理对于平滑小于屏幕像素的像素很重要。
DefaultCanvasItemTextureFilter DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_MAX = 4
代表 DefaultCanvasItemTextureFilter 枚举的大小。
enum DefaultCanvasItemTextureRepeat: 🔗
DefaultCanvasItemTextureRepeat DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_DISABLED = 0
禁用纹理重复。相反,当读取 0-1 范围之外的 UV 时,该值将被钳制在纹理的边缘,从而导致纹理的边界看起来被拉长。
DefaultCanvasItemTextureRepeat DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_ENABLED = 1
当 UV 坐标超出 0-1 范围时,使纹理能够重复。如果使用其中一种线性过滤模式,则当采样器过滤纹理边缘时,这可能会导致纹理边缘出现伪影。
DefaultCanvasItemTextureRepeat DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_MIRROR = 2
重复时翻转该纹理,使边缘对齐而不是突然改变。
DefaultCanvasItemTextureRepeat DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_MAX = 3
代表 DefaultCanvasItemTextureRepeat 枚举的大小。
enum SDFOversize: 🔗
SDFOversize SDF_OVERSIZE_100_PERCENT = 0
带符号距离场仅覆盖视口矩形本身。
SDFOversize SDF_OVERSIZE_120_PERCENT = 1
带符号距离场的每个边界都覆盖超出视口大小 20% 的范围。
SDFOversize SDF_OVERSIZE_150_PERCENT = 2
带符号距离场的每个边界都覆盖超出视口大小 50% 的范围。
SDFOversize SDF_OVERSIZE_200_PERCENT = 3
带符号距离场的每个边界都覆盖超出视口大小 100% 的范围(翻倍)。
SDFOversize SDF_OVERSIZE_MAX = 4
代表 SDFOversize 枚举的大小。
enum SDFScale: 🔗
SDFScale SDF_SCALE_100_PERCENT = 0
使用完整分辨率渲染带符号距离场。
SDFScale SDF_SCALE_50_PERCENT = 1
使用视口一半的分辨率渲染带符号距离场。
SDFScale SDF_SCALE_25_PERCENT = 2
使用视口四分之一的分辨率渲染带符号距离场。
SDFScale SDF_SCALE_MAX = 3
代表 SDFScale 枚举的大小。
enum VRSMode: 🔗
VRSMode VRS_DISABLED = 0
禁用可变速率着色。
VRSMode VRS_TEXTURE = 1
可变速率着色使用纹理。请注意,使用立体视觉时请使用为每个视图提供纹理的纹理图集。
VRSMode VRS_XR = 2
可变速率着色纹理由主 XRInterface 提供。
VRSMode VRS_MAX = 3
代表 VRSMode 枚举的大小。
enum VRSUpdateMode: 🔗
VRSUpdateMode VRS_UPDATE_DISABLED = 0
可变速率着色的输入纹理将不会被处理。
VRSUpdateMode VRS_UPDATE_ONCE = 1
可变速率着色的输入纹理将被处理一次。
VRSUpdateMode VRS_UPDATE_ALWAYS = 2
可变速率着色的输入纹理将每帧进行处理。
VRSUpdateMode VRS_UPDATE_MAX = 3
代表 VRSUpdateMode 枚举的大小。
属性说明
AnisotropicFiltering anisotropic_filtering_level = 2 🔗
void set_anisotropic_filtering_level(value: AnisotropicFiltering)
AnisotropicFiltering get_anisotropic_filtering_level()
设置在纹理上使用各向异性过滤时要采用的最大样本数(作为 2 的幂)。更高的采样数将导致倾斜角度的纹理更清晰,但计算成本更高。0 的值会强制禁用各向异性过滤,即使在启用它的材质上也是如此。
如果贴花和投影器被配置为使用各向异性过滤,则各向异性过滤级别也会影响它们。见 ProjectSettings.rendering/textures/decals/filter and ProjectSettings.rendering/textures/light_projectors/filter。
注意:要使该设置在 3D 中生效,请在材质上将 BaseMaterial3D.texture_filter 设置为 BaseMaterial3D.TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC 或 BaseMaterial3D.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC。
注意:要使该设置在 2D 中生效,请在显示纹理的 CanvasItem 节点上(或 CanvasTexture 中)将 CanvasItem.texture_filter 设置为 CanvasItem.TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC 或 CanvasItem.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC。然而各向异性过滤在 2D 中并不实用,因此在 2D 中只有在它产生有意义的视觉差异时才对纹理启用它。
bool audio_listener_enable_2d = false 🔗
如果为 true,该视口将处理 2D 音频流。
bool audio_listener_enable_3d = false 🔗
如果为 true,该视口将处理 3D 音频流。
int canvas_cull_mask = 4294967295 🔗
渲染层,该 Viewport 会渲染位于这些层中的 CanvasItem 节点。
DefaultCanvasItemTextureFilter canvas_item_default_texture_filter = 1 🔗
void set_default_canvas_item_texture_filter(value: DefaultCanvasItemTextureFilter)
DefaultCanvasItemTextureFilter get_default_canvas_item_texture_filter()
设置该 Viewport 中 CanvasItem 所使用的默认过滤模式。
DefaultCanvasItemTextureRepeat canvas_item_default_texture_repeat = 0 🔗
void set_default_canvas_item_texture_repeat(value: DefaultCanvasItemTextureRepeat)
DefaultCanvasItemTextureRepeat get_default_canvas_item_texture_repeat()
设置该 Viewport 中 CanvasItem 所使用的默认重复模式。
Transform2D canvas_transform 🔗
void set_canvas_transform(value: Transform2D)
Transform2D get_canvas_transform()
该视口的画布变换,对改变所有子 CanvasItem 的屏幕位置很有用。相对于该视口的全局画布变换。
在调试时,用于测试渲染的几何图形的叠加模式。
禁用 3D 渲染(但保留 2D 渲染)。
确定使用 FSR 放大模式时,放大后的图像的锐度。每个整数的锐度减半。值从 0.0(最锐利)到 2.0。高于 2.0 的值不会产生明显的差异。
要在根视口上控制此属性,请设置 ProjectSettings.rendering/scaling_3d/fsr_sharpness 项目设置。
Transform2D global_canvas_transform 🔗
void set_global_canvas_transform(value: Transform2D)
Transform2D get_global_canvas_transform()
该视口的全局画布变换。画布变换是相对于这个的。
bool gui_disable_input = false 🔗
如果为 true,该视口将不接收输入事件。
bool gui_embed_subwindows = false 🔗
如果为 true,子窗口(弹出窗口和对话框)将和控件等节点一样嵌入到应用程序窗口中。如果为 false,它们将显示为操作系统处理的独立窗口。
bool gui_snap_controls_to_pixels = true 🔗
如果为 true,该视口上的 GUI 控件将完美地放置像素。
bool handle_input_locally = true 🔗
如果为 true,则这个视口会把收到的输入事件标记为已被自身处理。如果为 false,则由第一个设置本地处理输入的父级视口进行这样的操作。
SubViewportContainer 会自动将其包含的 Viewport 的这个属性设置为 false。
另见 set_input_as_handled() 和 is_input_handled()。
float mesh_lod_threshold = 1.0 🔗
用于在 Viewport 中渲染的网格的自动 LOD 偏置(类似于 ReflectionProbe.mesh_lod_threshold)。较高的值将使用生成了 LOD 变化的网格的较不详细版本。如果被设置为 0.0,则自动 LOD 将被禁用。增加 mesh_lod_threshold,以牺牲几何细节为代价提高性能。
要在根视口上控制该属性,请设置 ProjectSettings.rendering/mesh_lod/lod_change/threshold_pixels 项目设置。
注意:mesh_lod_threshold 不影响 GeometryInstance3D 可见性范围(也称为“手动”LOD 或分层 LOD)。
2D/画布渲染的多重采样抗锯齿模式。数字越高,得到的边缘越平滑,代价是性能也会显著降低。设为 MSAA_2X 或 MSAA_4X 为佳,除非目标是非常高端的系统。对由着色器或纹理导致的锯齿无效。
另见 ProjectSettings.rendering/anti_aliasing/quality/msaa_2d 和 RenderingServer.viewport_set_msaa_2d()。
3D 渲染的多重采样抗锯齿模式。数字越高,得到的边缘越平滑,代价是性能也会显著降低。设为 2 或 4 为佳,除非目标是非常高端的系统。另见 3D 的双线性缩放 scaling_3d_mode 实现超采样,能够提供更高的质量,但消耗也更高。对由着色器或纹理导致的锯齿无效。
另见 ProjectSettings.rendering/anti_aliasing/quality/msaa_3d 和 RenderingServer.viewport_set_msaa_3d()。
如果为 true 且以下条件之一为真:设置了 SubViewport.size_2d_override_stretch 和 SubViewport.size_2d_override,设置了 Window.content_scale_factor 且启用了缩放,设置了 oversampling_override,则会启用字体和 DPITexture 的过采样。
float oversampling_override = 0.0 🔗
如果大于等于零,则会使用该值作为字体过采样的系数,否则过采样等于视口缩放。
如果为 true,则该视口会使用 world_3d 中定义的 World3D 的唯一副本。
bool physics_object_picking = false 🔗
如果为 true,则视口中渲染的对象会成为鼠标拾取过程中的候选。
注意:同时能够被拾取的对象最多只有 64 个,选择的顺序是不确定的,每次拾取可能都不相同。
bool physics_object_picking_first_only = false 🔗
void set_physics_object_picking_first_only(value: bool)
bool get_physics_object_picking_first_only()
如果为 true,则鼠标拾取的过程中只会将 input_event 信号发送给一个物理对象。如果你只希望获取最顶层的对象,就必须同时启用 physics_object_picking_sort。
如果为 false,则鼠标拾取的过程中会将 input_event 信号发送给所有物理对象。
仅适用于 2D CanvasItem 对象的拾取。
bool physics_object_picking_sort = false 🔗
如果为 true,则对象会按照固定的顺序接收鼠标拾取事件,首先会按各自的 CanvasItem.z_index 排序,然后按它们在场景树中的位置排序。如果为 false,则顺序不确定。
注意:默认情况下禁用此设置,因为它可能会产生昂贵的计算成本。
注意:排序发生在选择可拾取对象之后。因为同时能够被拾取的对象最多只有 64 个,所以无法保证 CanvasItem.z_index 最大的对象能够接收到拾取事件。
bool positional_shadow_atlas_16_bits = true 🔗
使用 16 位的全向灯/聚光灯阴影深度贴图。启用后,阴影的精度会降低,可能造成阴影失真,但能够在部分设备上提升性能。
PositionalShadowAtlasQuadrantSubdiv positional_shadow_atlas_quad_0 = 2 🔗
void set_positional_shadow_atlas_quadrant_subdiv(quadrant: int, subdiv: PositionalShadowAtlasQuadrantSubdiv)
PositionalShadowAtlasQuadrantSubdiv get_positional_shadow_atlas_quadrant_subdiv(quadrant: int) const
阴影图集上第一象限的细分量。
PositionalShadowAtlasQuadrantSubdiv positional_shadow_atlas_quad_1 = 2 🔗
void set_positional_shadow_atlas_quadrant_subdiv(quadrant: int, subdiv: PositionalShadowAtlasQuadrantSubdiv)
PositionalShadowAtlasQuadrantSubdiv get_positional_shadow_atlas_quadrant_subdiv(quadrant: int) const
阴影图集上第二象限的细分量。
PositionalShadowAtlasQuadrantSubdiv positional_shadow_atlas_quad_2 = 3 🔗
void set_positional_shadow_atlas_quadrant_subdiv(quadrant: int, subdiv: PositionalShadowAtlasQuadrantSubdiv)
PositionalShadowAtlasQuadrantSubdiv get_positional_shadow_atlas_quadrant_subdiv(quadrant: int) const
阴影图集上第三象限的细分量。
PositionalShadowAtlasQuadrantSubdiv positional_shadow_atlas_quad_3 = 4 🔗
void set_positional_shadow_atlas_quadrant_subdiv(quadrant: int, subdiv: PositionalShadowAtlasQuadrantSubdiv)
PositionalShadowAtlasQuadrantSubdiv get_positional_shadow_atlas_quadrant_subdiv(quadrant: int) const
阴影图集上第四象限的细分量。
int positional_shadow_atlas_size = 2048 🔗
阴影图集的分辨率(用于全向灯和聚光灯)。该值将向上舍入到最接近的 2 次幂。
注意:如果设置为 0,将根本看不到任何阴影(包括定向阴影)。可以通过降低 CPU 和 GPU 负载来显著提升在低端系统上的性能(因为绘制不带阴影的场景需要的绘制调用更少)。
Scaling3DMode scaling_3d_mode = 0 🔗
void set_scaling_3d_mode(value: Scaling3DMode)
Scaling3DMode get_scaling_3d_mode()
设置缩放 3D 模式。双线性缩放会以不同的分辨率进行渲染,对视口进行欠采样或超采样。FidelityFX Super Resolution 1.0,缩写为 FSR,是一种放大技术,通过使用一种空间感知放大算法,以快速帧速率生成高质量图像。FSR 比双线性的性能消耗略高一些,但产生的图像质量却高得多。应尽可能使用 FSR。
要在根视口上控制这个属性,请使用项目设置 ProjectSettings.rendering/scaling_3d/mode。
float scaling_3d_scale = 1.0 🔗
根据视口大小缩放 3D 渲染缓冲区,使用 ProjectSettings.rendering/scaling_3d/mode 中指定的图像过滤器将输出图像缩放到完整的视口大小。比 1.0 小的值可以牺牲质量加速 3D 渲染(欠采样)。比 1.0 大的值仅在双线性模式下可用,可以提升 3D 渲染质量,但性能消耗较高(超采样)。另见多重采样抗锯齿 ProjectSettings.rendering/anti_aliasing/quality/msaa_3d,性能消耗明显更低,但只会对多边形的边缘进行平滑。
使用 FSR 放大时,AMD 推荐将以下值作为预设选项暴露给用户“极致质量:0.77”“质量:0.67”“平衡:0.59”“性能:0.5”,不暴露特定的缩放值。
要在根视口上控制这个属性,请使用项目设置 ProjectSettings.rendering/scaling_3d/scale。
ScreenSpaceAA screen_space_aa = 0 🔗
void set_screen_space_aa(value: ScreenSpaceAA)
ScreenSpaceAA get_screen_space_aa()
设置使用的屏幕空间抗锯齿方法。屏幕空间抗锯齿的原理是在后期处理着色器中选择性地模糊边缘。它与 MSAA 不同,后者在渲染对象时采用多个覆盖样本。屏幕空间抗锯齿方法通常比 MSAA 更快,并且会平滑高光锯齿,但往往会使场景显得模糊。
另见 ProjectSettings.rendering/anti_aliasing/quality/screen_space_aa 和 RenderingServer.viewport_set_screen_space_aa()。
SDFOversize sdf_oversize = 1 🔗
void set_sdf_oversize(value: SDFOversize)
SDFOversize get_sdf_oversize()
控制 2D 带符号距离场应该覆盖原始视口中多大的区域。该 SDF 可以在 CanvasItem 着色器中采样,用于 GPUParticles2D 碰撞。生成带符号距离场时,较高的值能够让部分处于视口外的遮挡器也纳入考虑范围,但会以牺牲性能为代价。如果你注意到 LightOccluder2D 离开视口时粒子会穿过遮挡器,就可以增大这个设置。
每一侧每个轴上都会添加指定的百分比。例如,使用默认的 SDF_OVERSIZE_120_PERCENT,带符号距离场将覆盖视口外每侧(顶部、右侧、底部、左侧)20% 的视口大小。
用于 2D 带符号距离场的分辨率比例。值越高,相机移动时带符号距离场越精确、越稳定,但性能会受到影响。
bool snap_2d_transforms_to_pixel = false 🔗
如果为 true,则 CanvasItem 节点将在内部捕捉到全像素。它们的位置仍然可以是亚像素,但小数不会产生影响。这会导致更清晰的外观,但代价是移动不太流畅,尤其是在启用 Camera2D 平滑时。
bool snap_2d_vertices_to_pixel = false 🔗
如果为 true,则 CanvasItem 节点的顶点将捕捉到完整像素。仅影响最终顶点位置,而不影响变换。这会导致更清晰的外观,但代价是移动不太流畅,尤其是在启用 Camera2D 平滑时。
float texture_mipmap_bias = 0.0 🔗
通过从更低或更高的 mipmap 中读取数据影响最终纹理的锐度(也叫“纹理 LOD 偏置”)。负值会让 mipmap 纹理更锐利,但从较远处观察时颗粒更明显,而正值会让 mipmap 纹理更模糊(即便凑近看也一样)。
启用时间抗锯齿(use_taa)会对这个值应用 -0.5 的偏移量,而启用 FXAA(screen_space_aa)则会对这个值应用 -0.25 的偏移量。如果同时启用 TAA 和 FXAA,则会对这个值应用 -0.75 的偏移量。
注意:如果 scaling_3d_scale 比 1.0 小(包含),则会使用 texture_mipmap_bias 自动调整 mipmap 偏置,内部会根据缩放系数进行计算。公式为 log2(scaling_3d_scale) + mipmap_bias。
要在根视口上控制这个属性,请使用项目设置 ProjectSettings.rendering/textures/default_filters/texture_mipmap_bias。
如果 true,视口的背景应呈现为透明。
注意: 由于技术限制,当视口背景为透明时,某些渲染功能会被禁用。目前,这适用于屏幕空间反射、次表面散射和景深字段。
如果为 true,则会使用快速后期处理滤镜使条带现象不那么明显。如果 use_hdr_2d 为 false,则 2D 渲染不会受到去条带处理的影响,除非 Environment.background_mode 为 Environment.BG_CANVAS。如果 use_hdr_2d 为 true,则只会对根 Viewport 应用去条带处理,会影响所有 2D 和 3D 渲染,包括画布项目。
在某些情况下,去条带处理可能会引入轻微可见的抖动图案。建议仅在实际需要时启用去条带处理,因为抖动图案会使无损压缩的截图变大。
另见 ProjectSettings.rendering/anti_aliasing/quality/use_debanding 和 RenderingServer.viewport_set_use_debanding()。
如果为 true,则 2D 渲染会使用与 3D 帧缓冲的位深度相匹配的高动态范围(HDR)格式的帧缓冲。使用 Forward+ 或 Compatibility 渲染器时是 RGBA16 帧缓冲。而使用 Mobile 渲染器时则是 RGB10_A2 帧缓冲。
此外,2D 渲染将在线性色彩空间中进行,会在即将传输到屏幕之前转换到 sRGB 空间(如果视口已连接到屏幕)。
实际上,这意味着视口的最终结果不会限制在 0-1 范围内,无需调整色彩空间即可在 3D 渲染中使用。这使得 2D 渲染能够利用需要高动态范围的效果(例如 2D 辉光),并显著改善需要高度详细渐变的效果的外观。
bool use_occlusion_culling = false 🔗
如果为 true,OccluderInstance3D 节点将被用于该视口中的 3D 遮挡剔除。对于根视口,ProjectSettings.rendering/occlusion_culling/use_occlusion_culling 必须改为被设置为 true。
注意:启用遮挡剔除会消耗一定的 CPU。仅当确实打算使用遮挡剔除时才启用它,并考虑场景是否真的可以从遮挡剔除中受益。具有很少或没有对象阻挡视图的大型开放场景,通常不会从遮挡剔除中受益更多。与遮挡剔除相比,大型开放场景通常从网格 LOD 和可见性范围(GeometryInstance3D.visibility_range_begin 和 GeometryInstance3D.visibility_range_end)中受益更多。
注意:由于内存限制,Web 导出模板中默认不支持遮挡剔除。编译自定义 Web 导出模板时使用 module_raycast_enabled=yes 可以启用。
为该视口启用时间抗锯齿。TAA 通过抖动相机并累积最后渲染帧的图像来工作,运动向量渲染被用于解释相机和对象的运动。
注意:实现尚未完成,一些可视实例,如粒子和蒙皮网格可能会出现伪影。
另见 ProjectSettings.rendering/anti_aliasing/quality/use_taa 和 RenderingServer.viewport_set_use_taa()。
如果为 true,则视口将使用主 XR 接口来渲染 XR 输出。如果适用,这可以得到立体图像,渲染结果会输出到头戴设备。
用于这个视口的可变速率着色(Variable Rate Shading,VRS)模式。请注意,如果硬件不支持 VRS,则会忽略此属性。
vrs_mode 为 VRS_TEXTURE 时使用的纹理。
该纹理必须使用无损压缩格式,以便可以精确匹配颜色。以下 VRS 密度会映射为各种颜色,较亮的颜色代表较低的着色精度。
- 1×1 = rgb(0, 0, 0) - #000000
- 1×2 = rgb(0, 85, 0) - #005500
- 2×1 = rgb(85, 0, 0) - #550000
- 2×2 = rgb(85, 85, 0) - #555500
- 2×4 = rgb(85, 170, 0) - #55aa00
- 4×2 = rgb(170, 85, 0) - #aa5500
- 4×4 = rgb(170, 170, 0) - #aaaa00
- 4×8 = rgb(170, 255, 0) - #aaff00 - 大多数硬件不支持
- 8×4 = rgb(255, 170, 0) - #ffaa00 - 大多数硬件不支持
- 8×8 = rgb(255, 255, 0) - #ffff00 - 大多数硬件不支持
VRSUpdateMode vrs_update_mode = 1 🔗
void set_vrs_update_mode(value: VRSUpdateMode)
VRSUpdateMode get_vrs_update_mode()
设置视口的可变速率着色(VRS)的更新模式。VRS 要求将输入纹理转换为硬件支持的 VRS 方法可用的格式。更新模式定义该操作发生的频率。如果 GPU 不支持 VRS,或者未启用 VRS,则该属性将被忽略。
自定义的 World2D,可以作为 2D 环境源。
自定义的 World3D,可以作为 3D 环境源。
方法说明
World2D find_world_2d() const 🔗
返回该视口的首个有效 World2D,在它自身及任何 Viewport 祖先节点的 world_2d 属性中查找。
World3D find_world_3d() const 🔗
返回这个视口的第一个有效 World3D,会在自身和 Viewport 祖先的 world_3d 属性中搜索。
AudioListener2D get_audio_listener_2d() const 🔗
返回当前活动的 2D 音频侦听器。如果没有活动的 2D 音频侦听器,则返回 null,此时会将活动的 2D 相机作为侦听器。
AudioListener3D get_audio_listener_3d() const 🔗
返回当前活动的 3D 音频侦听器。如果没有活动的 3D 音频侦听器,则返回 null,此时会将活动的 3D 相机作为侦听器。
Camera2D get_camera_2d() const 🔗
返回当前活动的 2D 相机。如果没有活动的相机,则返回 null。
Camera3D get_camera_3d() const 🔗
返回当前活动的 3D 相机。
bool get_canvas_cull_mask_bit(layer: int) const 🔗
返回渲染层遮罩上的某个比特位。
Array[Window] get_embedded_subwindows() const 🔗
返回该视口内可见的嵌入 Window 的列表。
注意:其他视口内的 Window 不会被列出。
Transform2D get_final_transform() const 🔗
返回从该视口的坐标系到嵌入器坐标系统的变换。
Vector2 get_mouse_position() const 🔗
返回该 Viewport 中鼠标的位置,使用该 Viewport 的坐标系。
float get_oversampling() const 🔗
返回视口过采样系数。
PositionalShadowAtlasQuadrantSubdiv get_positional_shadow_atlas_quadrant_subdiv(quadrant: int) const 🔗
返回指定象限的位置阴影图集象限细分。
int get_render_info(type: RenderInfoType, info: RenderInfo) 🔗
返回给定类型的渲染统计数据。
Transform2D get_screen_transform() const 🔗
返回从视口的坐标到包含窗口管理器窗口的屏幕坐标的变换。
Transform2D get_stretch_transform() const 🔗
返回自动计算的 2D 拉伸变换,会考虑 Viewport 的拉伸设置。最终值已和 Window.content_scale_factor 相乘,但仅适用于根视口。如果在 SubViewport 上调用该方法(例如在包含 SubViewportContainer 和 SubViewport 的场景树中),则不会应用根窗口的缩放系数。使用返回值上的 Transform2D.get_scale() 可以在缩放 Camera2D 节点时补偿缩放或将 TextureRect 缩小到像素级精确,无论自动计算的缩放系数如何。
注意:由于像素缩放的工作方式,即使 Window.content_scale_aspect 设置为保持像素宽高比的模式,返回的变换的 X 和 Y 缩放也可能会略有不同。如果 Window.content_scale_aspect 为 Window.CONTENT_SCALE_ASPECT_IGNORE,则 X 和 Y 缩放可能会有显著差异。
ViewportTexture get_texture() const 🔗
返回该视口的纹理
注意:保存当前纹理时(例如保存到文件中),如果时机过早则可能是全黑或过时的图片,尤其是在 Node._ready() 等函数中使用时。要确保获得正确的纹理,你可以等待 RenderingServer.frame_post_draw 信号。
func _ready():
await RenderingServer.frame_post_draw
$Viewport.get_texture().get_image().save_png("user://Screenshot.png")
public async override void _Ready()
{
await ToSignal(RenderingServer.Singleton, RenderingServer.SignalName.FramePostDraw);
var viewport = GetNode<Viewport>("Viewport");
viewport.GetTexture().GetImage().SavePng("user://Screenshot.png");
}
注意:use_hdr_2d 为 true 时,返回的纹理是使用线性色彩空间编码的 HDR 图像。
RID get_viewport_rid() const 🔗
返回该视口在 RenderingServer 的 RID。
Rect2 get_visible_rect() const 🔗
返回全局屏幕坐标中的可见矩形。
void gui_cancel_drag() 🔗
取消之前的拖动操作,既可以是通过 Control._get_drag_data() 开始的拖动,也可以是通过 Control.force_drag() 强制开始的拖动。
Variant gui_get_drag_data() const 🔗
返回 GUI 的拖动数据,该数据先前由 Control._get_drag_data() 返回。
String gui_get_drag_description() const 🔗
返回拖动数据的人类可读描述。
Control gui_get_focus_owner() const 🔗
返回这个视口中当前聚焦的 Control。如果没有聚焦任何 Control,则返回 null。
Control gui_get_hovered_control() const 🔗
返回当前鼠标在该视口中悬停的 Control。如果鼠标没有对应的 Control 则返回 null。
获取到悬停的通常是末端的 Control 节点或子树中最深的一级。与 Node.is_ancestor_of() 配合的时候非常有用,可以查到鼠标是否位于某个控件树中。
bool gui_is_drag_successful() const 🔗
如果拖拽操作成功,则返回 true。
bool gui_is_dragging() const 🔗
如果该视口目前正在执行拖拽操作,可以进行放置动作,则返回 true。
如果你更倾向于轮询,可以作为 Node.NOTIFICATION_DRAG_BEGIN 和 Node.NOTIFICATION_DRAG_END 的替代品。
void gui_release_focus() 🔗
移除这个视口中当前聚焦 Control 的焦点。如果没有聚焦任何 Control,则什么都不做。
void gui_set_drag_description(description: String) 🔗
设置拖动数据的人类可读描述。
bool is_input_handled() const 🔗
返回当前的 InputEvent 是否已被处理。在 InputEvent 生命周期中调用 set_input_as_handled() 前,输入事件都处于未处理状态。
通常作为 Node._input()、Control._gui_input() 等输入处理方法以及对应的信号处理函数的一部分来实现。
如果 handle_input_locally 为 false,则这个方法会尝试查找第一个本地处理输入的父级视口,并返回该视口的 is_input_handled()。
void notify_mouse_entered() 🔗
通知 Viewport 鼠标已进入其区域。请在通过 push_input() 向 Viewport 发送 InputEventMouseButton 和 InputEventMouseMotion 前调用该方法。另见 notify_mouse_exited()。
注意:大多数情况下不需要调用该函数,因为会自动通知 SubViewportContainer 的子级 SubViewport 节点。只有在以非默认方式与视口交互时才有必要,例如以 TextureRect 中的纹理或通过 Area3D 转发输入事件。
void notify_mouse_exited() 🔗
通知 Viewport 鼠标已离开其区域。请在显示视口的节点注意到鼠标已离开视口显示区域时调用该方法。另见 notify_mouse_entered()。
注意:大多数情况下不需要调用该函数,因为会自动通知 SubViewportContainer 的子级 SubViewport 节点。只有在以非默认方式与视口交互时才有必要,例如以 TextureRect 中的纹理或通过 Area3D 转发输入事件。
void push_input(event: InputEvent, in_local_coords: bool = false) 🔗
在该 Viewport 中触发给定的 event 事件。可用于在不同视口之间传递 InputEvent,或者在本地应用通过网络传输或保存在文件中的事件。
如果 in_local_coords 为 false,则该事件中的位置使用的是嵌入器坐标系,会被转换至视口坐标系。如果 in_local_coords 为 true,则该事件的位置使用的是视口坐标系。
虽然这个方法的用途和 Input.parse_input_event() 类似,但不会根据 ProjectSettings.input_devices/pointing/emulate_touch_from_mouse 等项目设置对指定的 event 进行重映射。
调用这个方法会将调用传播至子节点,按照以下顺序调用:
Control._gui_input() 仅用于 Control 节点
如果某个方法使用 set_input_as_handled() 将输入标记为已处理,则列表中的后续方法均不会被调用。
如果没有任何方法处理该事件,并且 physics_object_picking 为 true,则该事件将用于物理对象的拾取。
void push_text_input(text: String) 🔗
辅助方法,会调用当前聚焦 Control 的 set_text() 方法,前提是该控件上定义了这个方法(例如聚焦 Control 为 Button 或 LineEdit)。
void push_unhandled_input(event: InputEvent, in_local_coords: bool = false) 🔗
已弃用: Use push_input() instead.
在该 Viewport 中触发给定的 event 事件。可用于在不同视口之间传递 InputEvent,或者在本地应用通过网络传输或保存在文件中的事件。
如果 in_local_coords 为 false,则该事件中的位置使用的是嵌入器坐标系,会被转换至视口坐标系。如果 in_local_coords 为 true,则该事件的位置使用的是视口坐标系。
调用这个方法会将调用传播至子节点,按照以下顺序调用:
如果某个方法使用 set_input_as_handled() 将输入标记为已处理,则列表中的后续方法均不会被调用。
如果上述方法均未处理事件,并且 physics_object_picking 为 true,则该事件将用于物理对象的拾取。
注意:这个方法不会将输入事件传播至嵌入的 Window 和 SubViewport。
void set_canvas_cull_mask_bit(layer: int, enable: bool) 🔗
设置或清除碰撞掩码上的比特位。可以简化 Viewport 层的编辑。
void set_input_as_handled() 🔗
让输入停止继续沿着 SceneTree 向下传播。
注意:不会影响 Input 中的方法,只会影响事件的传播。
void set_positional_shadow_atlas_quadrant_subdiv(quadrant: int, subdiv: PositionalShadowAtlasQuadrantSubdiv) 🔗
设置在指定象限内使用的细分数。较多的细分数可以让你在场景中一次拥有更多的阴影,但是会降低阴影的质量。一个好的做法是让象限具有不同数量的细分,并尽可能地减少细分。
void update_mouse_cursor_state() 🔗
根据当前鼠标光标的位置强制立即更新显示。包括更新鼠标光标的形状以及发送必要的 Control.mouse_entered、CollisionObject2D.mouse_entered、CollisionObject3D.mouse_entered、Window.mouse_entered 等信号,以及这些信号对应的 mouse_exited 版本。
void warp_mouse(position: Vector2) 🔗
使用该 Viewport 的坐标系,将鼠标指针移动到该 Viewport 中的指定位置。
注意:warp_mouse() 仅支持 Windows、macOS 和 Linux。它对 Android、iOS 和 Web 没有影响。