当前位置:首页|资讯

输入设置

作者:unity_某某师_高锦锦发布时间:2024-09-09

更新模式

Update Mode

这是一个基本设置,用于确定输入系统何时处理输入。

输入系统以三种不同方式之一处理输入:

类型                描述

Process Events In Dynamic Update    输入系统根据当前帧速率以不规则间隔处理事件。

Process Events In Fixed Update    输入系统以固定长度的时间间隔处理事件。这与 MonoBehaviour.FixedUpdate 的操作方式一致。每个间隔的长度由 Time.fixedDeltaTime 决定。

Process Events Manually    输入系统不会自动处理事件。相反,它只会在您调用 InputSystem.Update() 时处理事件。

注意:系统还会以 InputUpdateType.BeforeRender(用于 XR 追踪设备的晚期更新)和 InputUpdateType.Editor(用于 EditorWindows)的形式执行两种额外的更新类型。这些更新类型不会改变应用程序消耗输入的方式。

后台行为

Background Behavior

确定应用程序焦点的处理方式,即当焦点丢失或获得时发生的情况以及应用程序在不在前台时输入的行为。

该设置仅在项目的 Player 设置中启用了“后台运行”(Run In Background)时相关。在某些平台上支持此设置。在 Android 和 iOS 等平台上,当应用程序不在前台时,游戏将无法运行。

请注意,在编辑器中,“后台运行”被视为始终启用,因为无论 Game View 是否被聚焦,播放器循环都会保持运行。此外,在桌面平台上的开发人员版本中,该设置在构建过程中被强制启用。

注意:在编辑器中,后台行为还会受到 Play Mode Input Behavior 的影响。有关详细说明,请参见后台和焦点变化行为部分。特别是,哪些设备被认为能够在后台运行,部分取决于 Play Mode Input Behavior 设置。

设置                                    描述

Reset And Disable Non Background Devices    当焦点丢失时,对未标记为 canRunInBackground 的所有设备执行软重置并随后禁用它们。不影响标记为可以在后台运行的设备。
当焦点恢复时,重新启用任何已禁用的设备,并对这些设备发出同步请求以更新其当前状态。如果设备发出了同步请求但未响应,则对其进行软重置。此为默认设置。

Reset And Disable All Devices    当焦点丢失时,对所有设备执行软重置并随后禁用它们。
当焦点恢复时,重新启用所有设备,并对每个设备发出同步请求以更新其当前状态。如果设备未响应同步请求,则对其进行软重置。

Ignore Focus    焦点丢失时不执行任何操作。焦点恢复时,对所有设备发出同步请求。

焦点行为对动作在焦点变化时的行为有影响。当设备被重置时,绑定到该设备控件的动作将被取消。例如,这确保在焦点丢失时,用户按下 W、A、S 或 D 键时,游戏中的角色不会继续移动。取消的方式保证动作不会触发。即使动作被设置为在按钮松开时触发,如果按钮处于按下状态且由于设备重置而被重置,也不会触发动作。

过滤 .current 噪声

该设置默认禁用,仅在应用程序使用 API 中的 .current 属性(例如 Gamepad.current)时相关。如果应用程序未使用这些属性,请保持该设置禁用。否则,它会增加不必要的开销。

每当设备上有输入时,系统都会将相应设备设为 .current。例如,如果游戏手柄接收到新的输入,则 Gamepad.current 会分配给该游戏手柄。

一些设备的输入存在噪声,即使没有与其交互也会接收到输入。例如,PS4 的 DualShock 手柄由于内置的陀螺仪会产生持续的输入流。这意味着如果同时连接了 Xbox 和 PS4 手柄,并且用户正在使用 Xbox 手柄,PS4 手柄仍会不断推到前台并成为当前设备。

为了解决这个问题,可以启用噪声过滤。启用该设置后,当应用程序接收到输入时,系统会判断输入是否来自具有噪声控件的设备(InputControl.noisy)。如果是,还会判断给定输入是否包含在未标记为噪声的控件上的任何状态更改。如果是,该设备将成为当前设备。否则,应用程序仍会消耗输入,并且这些输入也会显示在设备上,但设备不会成为当前设备。

注意:系统目前尚未检测到大多数形式的噪声,但确实检测到了游戏手柄摇杆上的噪声。这意味着即使摇杆小幅度移动但仍在死区范围内,设备仍会成为当前设备。这并不需要实际操作摇杆本身。在大多数游戏手柄上,当整个设备移动时,摇杆会在一个小范围内移动。

补偿方向

如果启用该设置,传感器报告的旋转值将绕 Z 轴旋转,如下所示:

屏幕方向                对旋转值的影响

ScreenOrientation.Portrait    值保持不变

ScreenOrientation.PortraitUpsideDown     值旋转 180 度

ScreenOrientation.LandscapeLeft        值旋转 90 度

ScreenOrientation.LandscapeRight        值旋转 270 度

该设置影响以下传感器:

  • 陀螺仪

  • 重力传感器

  • 姿态传感器

  • 加速度计

  • 线性加速度传感器

默认值属性

属性                描述

Default Deadzone Min    当 Stick Deadzone 或 Axis Deadzone 处理器上没有显式设置最小值时,使用的默认最小值。

Default Deadzone Max    当 Stick Deadzone 或 Axis Deadzone 处理器上没有显式设置最大值时,使用的默认最大值。

Default Button Press Point    按钮控件的默认按压点,以及各种交互的默认按压点。对于具有模拟物理输入的按钮控件(例如游戏手柄的触发器),该设置配置它们需要按下的深度,以便系统将其视为已按下。

Default Tap Time    Tap 和 MultiTap 交互的默认持续时间。触摸屏设备也使用此设置来区分触摸的轻敲和新触摸。

Default Slow Tap Time    SlowTap 交互的默认持续时间。

Default Hold Time    Hold 交互的默认持续时间。

Tap Radius    触摸屏设备上两次轻敲之间的最大距离,以便系统将其视为同一次触摸的轻敲(而不是新的触摸)。

Multi Tap Delay Time    MultiTap 交互的默认轻敲之间的延迟。触摸屏设备也使用此设置来计算多次轻敲(参见 TouchControl.tapCount)。

支持的设备

项目通常支持一组已知的输入方法。例如,移动应用程序可能只支持触摸,而控制台应用程序可能只支持游戏手柄。跨平台应用程序可能支持游戏手柄、鼠标和键盘,但可能不需要 XR 设备支持。

为缩小 Editor UI 向您呈现的选项范围,并避免创建应用程序不使用的输入设备和消耗输入,您可以根据项目逐个限制支持的设备集。

如果 Supported Devices 列表为空,则不适用任何限制,这意味着输入系统会添加 Unity 识别的任何设备并为其处理输入。但是,如果 Support Devices 包含一个或多个条目,则输入系统只会添加列表中类型的设备。

注意:当 Support Devices 列表发生更改时,系统会根据需要删除或重新添加设备。系统始终保留有关潜在设备的信息,这意味着只要设备保持连接,它就不会永久丢失。

要将设备添加到列表中,点击 Add (+) 图标并从出现的菜单中选择设备。

Abstract Devices 包含常见的设备抽象,例如“键盘”和“鼠标”。Specific Devices 则包含特定的硬件产品。

在编辑器中覆盖

在编辑器中,您可能希望使用应用程序不支持的输入设备。例如,即使应用程序只支持游戏手柄,您也可能希望在编辑器中使用平板电脑。

要强制编辑器添加所有本地可用设备,即使它们未列在 Supported Devices 列表中,打开 Input Debugger

菜单:Window > Analysis > Input Debugger),然后选择 Options > Add Devices Not Listed in 'Supported Devices'

Add Devices Not Listed In Supported Devices

此设置存储为用户设置(即,其他打开同一项目的用户无法看到该设置)。

平台特定设置

iOS/tvOS

属性                    描述

Motion Usage    管理对设备上计步器的访问。如果启用,设置中提供的描述字符串将添加到应用程序的 Info.plist 中。

编辑器

Play Mode Input Behavior

决定在播放模式下输入在编辑器中的处理方式。与播放器不同,在编辑器中 Unity(因此其输入后端)将保持运行,只要编辑器处于活动状态,无论 Game View 是否聚焦。此设置决定当焦点不在任何 Game View 上时,输入应如何处理——因此 Application.isFocused 为 false,播放器被认为在后台运行。

设置                        描述

Pointers And Keyboards Respect Game View Focus    只有指针和键盘设备需要 Game View 聚焦。其他设备无论 Game View 是否聚焦,都会将其输入路由到应用程序。
此设置基本上会将所有默认情况下不用于操作 Editor UI 的输入路由到游戏中。因此,游戏手柄等设备在播放模式下将始终传递输入,而键盘输入则需要明确将焦点放在 Game View 窗口上。
此设置为默认设置。

All Devices Respect Game View Focus    所有设备都需要 Game View 聚焦。当没有 Game View 窗口被聚焦时,所有输入都会发送到编辑器而不是应用程序。这允许其他 EditorWindows 接收这些输入(例如,来自游戏手柄)。

All Device Input Always Goes To Game View    禁用所有编辑器输入,输入被视为仅供 Game Views 使用。并且,后台行为会被严格执行,像在播放器中一样执行。这意味着如果某种情况下设备在播放器中被禁用,它也会在编辑器中被禁用。
此设置最接近将播放器行为与编辑器行为对齐。但是,请注意,任何 EditorWindows 都将无法看到来自设备的输入(这不影响编辑器中的 IMGUI 和 UITK 输入,因为它们不消耗输入系统的输入)。


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1