使您的 Unity 游戏在所有外形尺寸上都表现出色

在当今竞争激烈的游戏市场中,尽可能广泛地覆盖受众比以往任何时候都更加重要。通过为不同的外形尺寸(例如手机、平板电脑、折叠屏手机和桌面)开发游戏,您可以接触到更多潜在玩家,并增加成功的机会。

支持屏幕可调整大小

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

如果您的游戏不支持所有窗口大小和方向配置,则平台会将您的游戏在 兼容模式 中进行信箱化处理,并在必要时在更改为不受支持的配置之前提示玩家。

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

有关更多信息,请参阅 支持大屏幕可调整大小

多窗口模式

图 2. 桌面和折叠式设备在桌面姿势下的不同 UI。

多窗口模式 允许多个应用同时共享同一屏幕。应用可以并排显示或一个在上一个在下(分屏模式)、一个应用以小窗口覆盖其他应用(画中画模式)或各个应用在单独的可移动、可调整大小的窗口中(自由形式模式)。

为避免在游戏在多窗口模式下运行时进入 兼容模式,请通过在 Unity 构建设置 中启用“可调整大小的窗口”选项来声明您的游戏能够处理可调整大小的功能。

图 3. Unity 的 Android 分辨率和显示设置。

显示挖孔

显示挖孔 是某些设备上延伸到显示表面的区域。挖孔允许获得边缘到边缘的体验,同时为设备前部的重要传感器提供空间。

图 4. 显示挖孔。

为了为您的游戏带来边缘到边缘的体验,请将游戏配置为支持安全区域。查询 Unity 的 safeArea API 以获取屏幕的安全区域(以像素为单位),并相应地调整游戏 UI 和 UX,特别是对于用户可以交互的元素。

折叠姿势

折叠屏设备可以处于各种折叠状态,例如 FLAT(完全展开)或 HALF_OPENED(介于完全展开和完全闭合之间)。当设备处于 HALF_OPENED 状态时,根据折叠的方向,可能有两种姿势:桌面姿势(水平折叠)和书本姿势(垂直折叠)。使用桌面姿势来增强玩家的沉浸感和参与度。

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

要实现桌面姿势,请 扩展默认的 Unity 活动,然后使用 Jetpack WindowManager 布局库来 使您的游戏能够感知折叠

Unity 示例项目

Unity 示例项目基于 Unity 2D 演示项目 Lost Crypt。示例项目演示了如何在 Unity 中支持大屏幕可调整大小的功能。大屏幕和折叠屏设备支持需要对 Unity 构建选项进行一些更改,以及在相机和 UI 画布布局中进行考虑。

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

  • 原始:支持基本的可调整大小的功能
  • 锚定:与“原始”场景相同,但适应各种纵横比并避免显示挖孔
  • 铰链感知:与“锚定”场景相同,但支持桌面姿势
  • 主菜单:起始场景,允许导航到其他场景并完全支持所有设备方向、折叠、展开和桌面姿势

构建 Android 版本时,选择所有场景并将“主菜单”场景设置为起始场景。

图 6. “主菜单”场景允许您在桌面姿势下导航到其他场景。

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

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

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

在处理显示挖孔的同时实现全屏沉浸式体验

使您的游戏能够使用整个屏幕,以增强用户体验,使游戏玩法更具沉浸感。更新您的游戏 UI 锚定和相机设置以自动调整到屏幕大小。这允许 UI 元素相对于屏幕大小保持其位置。

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

Game scene full screen on inner and outer displays of a foldable device.
图 8. 带有显示挖孔的“锚定”场景。

优化折叠设备

Unity 示例项目“HingeAware”的最后一个场景包含一个ConfigurationManager对象,该对象通过Jetpack 库 API扩展活动(参见Assets/Plugins/Android/LargeScreenPlayableActivity.java)响应目标设备的不同折叠状态。该场景使用PanelOnFold脚本根据设备的折叠状态控制 UI,例如,在设备处于桌面模式时显示底部控制器面板并调整摄像头。

图 9.“HingeAware”场景支持桌面模式。