Version: 6000.3
语言: 中文
Web 中的嵌入式资源
配置 Web 画布大小

Web 中的输入

Unity Web 支持来自不同设备的各种类型的输入,包括游戏手柄、纵杆、触摸屏、键盘和运动传感器。

游戏手柄和纵杆支持

Web 支持游戏手柄的以下输入:

Web 还支持支持 HTML5 游戏手柄 API 的浏览器的纵杆。

某些浏览器仅在用户在应用程序处于焦点状态时与设备交互后才允许访问输入设备。这种类型的安全措施可防止用户使用连接的设备进行浏览器指纹识别。因此,请确保应用程序在调用 Input.GetJoystickNames() 以检查连接的设备之前指示用户按下其游戏手柄/纵杆上的按钮。

映射控制器

网络游戏控制器控制游戏中对象和角色的设备。
请参阅术语表
旧输入系统的映射与 W3 规范保持一致,其中按钮映射布局布局如下:

按钮 描述
按钮[0] 右侧集群中的底部按钮 = CROSS (X)
按钮[1] 右侧集群中的右键 = CIRCLE
按钮[2] 右簇中的左按钮 = SQUARE
按钮[3] 右侧集群中的顶部按钮 = 三角形

注意:由于 Web 遵循 W3 规范,因此它可能与其他平台不一致,并且如果您同时面向多个平台(例如 Windows 和 Web),则需要不同的方法。有关更多信息,请参阅有关重新映射的 W3 文档。

触摸支持

Unity Web 在支持触摸的浏览器和设备中实现 Input.touches 和其他相关 API。默认情况下,移动设备在触摸屏上显示软键盘,供用户在 UI 输入字段中输入文本。要禁用此行为,请使用 WebGLInput.mobileKeyboardSupport 属性。

键盘输入和焦点处理

默认情况下,Unity Web 会处理网页收到的所有键盘输入,无论 Web 画布是否具有焦点。这允许用户使用基于键盘的应用程序,而无需单击 Web 画布。

以下注意事项适用于特定键盘输入,如下所述:

键盘输入行为 描述
HTML 元素(例如文本字段) 如果在用于接收键盘输入的网页中引入 HTML 元素(如文本字段),可能会导致错误。Unity 在页面的其余部分接收输入事件之前使用输入事件。
要使 HTML 元素接收键盘输入,请将
WebGLInput.captureAllKeyboardInputfalse.这样,应用程序仅在 Web 画布具有焦点时才接收输入。
Esc 某些浏览器(如 Safari)阻止使用 Esc 键切换到全屏模式的功能,因为 Esc 键在 Web 环境中受到保护。其他浏览器(如 Google Chrome)的行为可能不可预测。当浏览器处于全屏模式时,用户只能使用 Esc 键退出全屏模式。根据浏览器类型,单击 Esc 键可能并不总是触发事件从浏览器转发到应用程序。
HideMobileInput HideMobileInput选项对 Web 平台没有影响。此选项无效,因为您需要一个文本输入字段允许用户输入文本字符串
的字段更多信息 请参阅术语表
以触发浏览器中的虚拟键盘。Web 平台实例化文本输入字段,以便在 Unity 播放器需要文本输入时触发虚拟键盘。文本输入字段显示在虚拟键盘上方,就像其他平台一样。由于虚拟键盘依赖于移动文本输入字段,因此它不能在 Web 平台上显示为隐藏。

移动传感器支持

对于支持触摸的浏览器和移动设备,Unity Web 包括对以下传感器的支持:

重要提示:浏览器仅允许在安全上下文中输入传感器,这意味着您必须通过 HTTPS 提供网页。唯一的例外是http://localhost,您可以在开发过程中使用它。

光标锁定支持

Unity Web 平台支持使用 HTML5 API 的游标锁定Element.requestPointerLock.使用光标锁定将鼠标光标锁定到游戏窗口的中心。当光标被锁定时,它在 Unity 中显示为隐藏状态,并且在鼠标移动时不会移动。这对于第一人称游戏特别有用,其中鼠标光标通常用于控制玩家角度的方向。

注意:由于浏览器对游标锁定的支持各不相同,请参阅有关 Element: requestPointerLock() 方法的 Mozilla 文档。

激活光标锁定

要锁定光标,请使用Cursor.lockState财产。例如,当用户单击鼠标左键时,以下代码将光标切换到锁定状态:

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        Cursor.lockState = CursorLockMode.Locked;
    }
}

光标锁定需要通过用户交互激活。有关详细信息,请参阅全屏模式和光标锁定的其他注意事项

停用光标锁定

Esc 键解锁光标。

粘性光标锁定

stickyCursorLock属性通常用于第一人称游戏,因为无论浏览器行为如何,它都可以保持光标锁定模式。

stickyCursorLock以确保Cursor.lockState是持久的,即使浏览器从 Unity 画布中释放光标锁定(通常使用 Esc 键),在这种情况下,下次画布处于焦点时,光标也会再次锁定。

因此,如果您将WebGLInput._stickyCursorLocktrueCursor.lockState留在CursorLockMode.Locked州 即使 Unity 画布 HTML 元素解锁了光标。

如果将WebGLInput._stickyCursorLockfalse:

  • Cursor.lockState与浏览器的光标锁定状态保持同步。

  • 如果用户按 Esc 键取消画布光标锁定,Cursor.lockState更改为CursorLockMode.None.

注意:在 Web 中,stickyCursorLock设置为true默认情况下。

全屏模式

在游戏中使用全屏模式执行以下作:

  • 将整个屏幕用于您的游戏。

  • 隐藏浏览器用户界面 (UI) 元素,例如地址栏和选项卡。

  • 隐藏 Unity 播放器 UI 元素,例如标题栏和工具栏Unity 编辑器顶部的一排按钮和基本控件,允许您以各种方式(例如缩放、翻译)与编辑器交互。更多信息
    请参阅术语表
    .

Unity Web 平台支持使用 HTML5 API 的全屏模式,Element.requestFullscreen.

注意:由于浏览器对全屏模式的支持各不相同,请参阅有关 Element: requestFullscreen() 方法的 Mozilla 文档。

在 Web 中激活全屏模式

要启用全屏模式,请使用Screen.fullScreen财产。例如,当用户按 F 键时,以下代码将游戏切换到全屏模式:

void Update()
{
    if (Input.GetKeyDown(KeyCode.F))
    {
        Screen.fullScreen = true;
    }
}

注意:Screen.fullScreen属性设置为false默认情况下。

全屏模式需要通过用户交互来激活。有关详细信息,请参阅全屏模式和光标锁定的其他注意事项

退出全屏模式

要退出全屏模式,请再次按 Esc 键,或将鼠标指针悬停在屏幕顶部以访问地址栏和选项卡。

全屏模式和光标锁定的其他注意事项

出于安全考虑,浏览器只允许您在用户发起的事件(例如鼠标单击或按键)后锁定光标并启用全屏模式。

由于 Unity 不支持单独的事件和渲染循环,因此它会延迟事件处理,直到浏览器不再确认从 Unity 脚本发出的全屏或光标锁定请求作为对触发它的事件的直接响应。

因此,Unity 会在下一个用户发起的事件上触发请求,而不是触发光标锁定或全屏请求的事件。

若要启用光标锁定或全屏模式以获得更好的效果,请使用鼠标/按键事件来触发响应,而不是鼠标/按键向上事件。这样,您可以确保延迟请求保证由相应的鼠标/键向上事件触发,如果不是由用户之前发起的事件触发的。

您还可以使用 Unity 的 UI。Button 组件通过创建Button,它覆盖了OnPointerDown方法。

注意:某些浏览器可能会显示通知消息或提示用户授予权限,然后才能进入全屏模式或锁定光标。

其他资源

Web 中的嵌入式资源
配置 Web 画布大小