掌机的底座(docked)行为
某些掌机会在插入底座时使用。虽然没有 API 可以直接判断掌机是否处于底座模式,但插入底座的设备可能连接了外部显示器。你可以使用 EnumDisplayDevices 和 EnumDisplaySettings API 检查外部显示器。 当掌机设备插入底座时,使用以下方法检查已连接的外部显示器:- 检查是否有额外的手柄。掌机自带的手柄始终可用,但用户也可能连接额外手柄。
- 检查已连接显示器的屏幕尺寸。
- 虚拟键盘的建议依然适用,因为手柄仍是主要输入方式。
- 有些玩家可能会像在主机上一样连接鼠标和键盘。
保证可用的输入
尽管不同的游戏掌机可能提供额外的输入方式,但每台掌机都具备以下输入。- A、B、X、Y 按钮
- 左肩键与右肩键
- 左扳机与右扳机
- 左摇杆与右摇杆
- 方向键(D-pad)
- Menu 按钮
- View 按钮
电源
要检查掌机设备是否使用交流电而非电池,请调用 GetSystemPowerStatus 函数。它会告知设备是否使用交流电,并提供电量摘要(高、低、临界或正在充电)。 请考虑你的游戏对设备电池续航的影响,因为游戏所需的功耗并不总是显而易见的。XBOX Sustainability Toolkit 中可能的节能建议同样适用于掌机。 要最大程度节能:- 启用 VSync,给 GPU 更多空闲时间,降低功耗。
- 降低内部渲染分辨率并进行上采样。
- 降低帧率以省电。注意:较低的帧率可能影响玩法。
- 出现全屏菜单或 UI 元素、或游戏暂停时,停止世界渲染。
- 检测到输入空闲、玩家不活跃时暂停游戏。
屏幕尺寸
尽管不同的游戏掌机屏幕分辨率各异,你可以依赖以下标准:- 屏幕对角线尺寸至少为 7 英寸(17.8 cm)。
- 屏幕的宽高比为 16:9 或 16:10。
掌机体验最佳实践示例
关于为掌机设备构建和优化游戏的更多见解,Microsoft 发布了两个示例:一个原生 C++ 示例和一个 Unity 托管 C# 示例。两者都提供了一组类似的最佳实践,展示如何使用 API 轻松管理游戏的掌机体验。- 判断设备是否为掌机。
- 判断设备是使用电池、正在充电,还是使用外部电源。
- 查询设备特定属性,包括集成显示器属性。
- 处理 DPI 变化并相应地缩放 UI。
- 使用虚拟键盘进行文本输入。
- 查询网络设备及类型。
- 判断网络与 Bluetooth® 连接状态。
- 处理来自手柄、键盘和鼠标的输入。
- 判断输入模态,例如识别最近使用的输入设备。
- 原生 C++ 示例:C++ Sample on GitHub。
- Unity 托管 C# 示例:Unity Managed C# Sample on GitHub。
