让您的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示例项目的最后一个场景“铰链感知”包含一个ConfigurationManager对象,该对象通过Jetpack库API扩展的活动(请参阅Assets/Plugins/Android/LargeScreenPlayableActivity.java)来响应目标设备的不同折叠状态。该场景使用PanelOnFold脚本根据设备的折叠状态控制UI,例如,在设备处于桌面姿势时显示底部控制器面板并调整相机。

图9. “铰链感知”场景支持桌面姿势。