让您的 Unity 游戏在所有外形规格的设备上表现出色

在当今竞争激烈的游戏市场中,尽可能扩大受众群体范围比以往任何时候都更加重要。通过针对不同外形规格的设备(例如手机、平板电脑、可折叠设备和桌面设备)开发游戏,您可以吸引更广泛的潜在玩家并提高成功几率。

支持屏幕大小调整

为了支持不同的外形规格,您的游戏必须可调整大小。通过调整尺寸,您的游戏可以支持设备配置,例如纵向和横向、多窗口模式以及可折叠设备的折叠和展开状态。

如果您的游戏不支持所有窗口大小和屏幕方向配置,平台会在兼容模式下为您的游戏添加信箱模式,如有必要,还会在更改为不受支持的配置之前提示玩家。

图 1.“配置兼容性”对话框。

如需了解详情,请参阅支持大屏幕尺寸调整

多窗口模式

图 2.桌面设备上具有不同的界面,桌面折叠状态下的可折叠设备不同。

多窗口模式可让多个应用同时共享同一屏幕。应用可以并排或上下并排显示(分屏模式),一个应用显示在小窗口中叠加其他应用(画中画模式),或者在可移动且可调整大小的单独窗口中显示各个应用(自由窗口模式)。

为避免在游戏在多窗口模式下运行时进入兼容模式,请在 Unity build 设置中启用可调整大小的窗口选项,声明游戏能够处理尺寸调整。

图 3.针对 Android 的 Unity 的“Resolution”和“Presentation”设置。

刘海屏

刘海屏是某些设备上延伸到显示屏表面的一个区域。刘海屏可提供全面屏体验,同时为设备正面的重要传感器留出空间。

图 4.刘海屏。

如需为您的游戏提供全屏体验,请将游戏配置为具备安全帧感知能力。查询 Unity safeArea API,以获取屏幕的安全区域(以像素为单位),并相应地调整游戏界面和用户体验,尤其是对于用户可以与之互动的元素。

可折叠设备的折叠状态

可折叠设备可能会处于各种折叠状态,例如 FLAT(完全展开)或 HALF_OPENED(介于完全展开和完全闭合之间)。当设备处于 HALF_OPENED 状态时,可能处于两种折叠状态,具体取决于折叠边的方向:桌面折叠状态(水平折叠边)和图书折叠状态(垂直折叠边)。 使用桌面折叠状态提升玩家的沉浸感和互动度。

图 5.游戏处于桌面折叠状态,主视图位于显示屏的垂直部分,控件位于水平部分。

如需实现桌面折叠状态,请扩展默认 Unity activity,然后使用 Jetpack WindowManager 布局库让游戏具有折叠感知能力

Unity 示例项目

Unity 示例项目基于 Unity 2D 演示项目 Lost Crypt。示例项目演示了如何在 Unity 中支持大屏幕尺寸可调整性。若要支持大屏设备和可折叠设备,您需要对 Unity 构建选项进行多项更改,以及相机和界面画布布局方面的注意事项。

您可以立即下载示例项目。该项目包含四个不同的场景:

  • 原始版本:支持基本的可调整大小功能
  • 锚定:与“原始”场景相同,但会根据各种宽高比进行调整,并避开刘海屏
  • HingeAware:与“锚定”场景相同,但支持桌面折叠状态
  • Mainmenu:启动场景,允许导航到其他场景,并完全支持所有设备屏幕方向、折叠、展开和桌面折叠状态

针对 Android 进行构建时,请选择所有场景,并将“Mainmenu”场景设置为起始场景。

图 6. 通过“Mainmenu”场景,您可以在桌面折叠状态下导航到其他场景。

从支持可调整大小的窗口开始

在 Android 大屏应用中实现对各种显示屏尺寸和宽高比的支持,以确保您的游戏或应用在不同设备上正确显示。通过在 Unity 构建设置中设置 Resizable Window 属性,让游戏能够调整大小和更改宽高比(请参阅“多窗口模式”部分)。调整相机和画布的宽高比,以更好地适应不同的屏幕。在 Build SettingsPlugins/Android/AndroidManifest.xml 文件中查看项目设置。在项目的“原始”场景中体验可调整大小的全屏功能。

图 7. “原始”场景支持“可调整大小的窗口”功能。

处理刘海屏,获享全屏沉浸式体验

让您的游戏可以使用整个屏幕,为游戏增添沉浸感,从而增强用户体验。请更新您的游戏界面锚定和相机设置,以自动调整以适应屏幕尺寸。这样一来,界面元素便可以保持相对于屏幕尺寸的位置。

“锚定”场景使用 CameraAspectLock 脚本通过扩展 activity 响应设备配置更改(请参阅 Assets/Plugins/Android/LargeScreenPlayableActivity.java)。SafeZoneAPI 脚本演示了 Unity 的 safeArea API,该脚本绑定到“锚定”场景内的 SafeZone 对象。

可折叠设备的内外显示屏上的游戏场景全屏显示。
图 8. 带有刘海屏的“锚定”场景。

针对可折叠设备进行优化

Unity 示例项目“HingeAware”的最后一个场景包含一个 ConfigurationManager 对象,该对象通过 Jetpack 库 API扩展 activity(请参阅 Assets/Plugins/Android/LargeScreenPlayableActivity.java)来响应目标设备的不同折叠状态。该场景使用 PanelOnFold 脚本根据设备的折叠状态来控制界面,例如,在设备处于桌面折叠状态时显示底部控制器。

图 9. “HingeAware”场景支持桌面折叠状态。