有 200M+ Xbox 和 PlayStation 玩家,控制器是吸引更多用户的主要机会。 与普通设备相比,设计控制器和 10 英尺 UI 体验的界面有一些特殊指导,您需要遵循才能帮助您在控制器上的体验成功。
为控制器设计
控制器体验受到用户通过输入控制器的命令,这些命令需要特殊设计来实现顺滑的交互体验。
简化用户界面
应用以下内容来简化控制台的用户界面设计:
可访问的导航控制 : 基础导航,包括四个方向、选择和返回,控制用户如何在控制台上访问和与您的内容交互。确保用户使用这些基本导航控件访问您的体验的每个互动部分,以便他们可以轻松访问您的体验。
默认控制器导航 : 尽管用户可以通过激活虚拟指针启动UI菜单,但由于不是所有用户都熟悉此过程,因此您需要支持控制器导航您的UI作为默认选项而不是要求用户激活虚拟指针。
最小控制器输入复杂性 :与点击或单击输入方法不同,控制器用户通过按一次按钮导航,因此在其他设备上按一次移动可能会导致额外的移动,因此在您的体验中键动操作只需要几个移动来访问。请确保您的体验中的键动操作只需要几个移动来访1) 使用权 2)通行证 3)访问权限。
无聊对话窗口 : 无论您使用默认的在体验中文字聊天系统或作为您的自定义聊天系统的后端聊天系统,禁用聊天窗口 对于控制台体验。
添加额外控制
与移动设备和桌面设备不同,在控制台上导航总是是顺序的,因此用户无法在其他设备上快速地跳转远处元素。为了提高导航速度,请考虑为用户提供额外的按钮和快捷方式以实现必要的体验操作。
支持动态按钮图标
当您的体验扩展到更多平台时,请确保显示按钮图标,即可匹配不同的设备。 UserInputService 有两种方法可以实现此目标:
UserInputService:GetStringForKeyCode() 可以将 US 键码转换为控制台键盘布局。它的帮助是显示您的自定义资产以按钮图标来匹配您的体验感。下面的例子显示了您如何将自定义资产转换为 Enum.KeyCode.ButtonA 的:
定制地图local UserInputService = game:GetService("UserInputService")local imageLabel = script.Parentlocal key = Enum.KeyCode.ButtonAlocal mappings = {ButtonA = "rbxasset://BUTTON_A_ASSET", -- 替换所需的按钮素材ButtonCross = "rbxasset://BUTTON_CROSS_ASSET" -- 替换所需的按钮十字素材}local mappedKey = UserInputService:GetStringForKeyCode(key)local image = mappings[mappedKey]imageLabel.Image = imageUserInputService:GetImageForKeyCode() 返回 Roblox 默认图标为要求的键码作为简单的替换,像以下示例为映射 Enum.KeyCode.ButtonA 显示:
映射默认图标local UserInputService = game:GetService("UserInputService")local imageLabel = script.Parentlocal key = Enum.KeyCode.ButtonAlocal mappedIcon = UserInputService:GetImageForKeyCode(key)imageLabel.Image = mappedIcon
提供 haptic 反馈
控制器的一个独特优势是提供物理振动来激发用户的触摸感受。您可以使用 HapticService 来增强用户的身体感受,并提供有用的反馈。一些可以通过物理振动提升沉浸感的例子包括:
- 物理戏剧事件,例如爆炸或碰撞。
- 需要用户注意的事件,例如门铃或新顾客进入商购物。
- 用户界面动作通知,例如滚动到列表的末端或单击禁用按钮。
HapticService 还允许您控制控制器中的个별电机以设置振动的强度和持续时间,因此您可以根据不同的目的设置不同的振动以及维持与触发反馈的一致性。 设计震动精心,避免过度使用,因为用户可能会发现常见的震动不佳或烦人。
为 10 英尺体验构建
在控制台上,用户通常坐在屏幕 10 英尺外。 1.5 倍的比例因素确保 UI 是轻松、易于导航栏的,并且字体可读。
考虑电视安全区
由于历史和技术限制,不是所有电视都能完全显示内容到屏幕边缘,请将 UI 元素放在 TV 安全区域以确保重要的体验元素在各个电视上可见。
实现动态大小 UI
使用相对大小和相对位置来实现您的界面用户界面(UI)的测量。 通过将“缩放因素”添加到所有的UI尺寸来:
- 首先开发低分辨率。
- 使用相对位置和 UISizeConstraint 来缩放 UI。
- 基于输出特性使用 GuiService:IsTenFootInterface() 。
- 实现 ScrollingFrame 来在屏幕上的用户界面扩展时减少混乱。
适应进度揭示
进度渐变会将高级或未使用的功能拔出到一个副屏幕。它是一种最佳的方法来清理您的 UI 并使其易于使用。 对于控制端 UX,它是常见的并更快的方法,让用户在屏幕上进出,而不是将所有东西都放在一个屏幕上,像设计用户界面一样。
提供声音反馈
与桌面或移动端界面不同,在其中通常是静音或依赖微弱的触摸反馈,您可以添加音效来改善控制台交互。当用户使用控制器导航 UI 时,考虑添加音效来确认选择或信号菜单 traversal,这可以提升整体体验。