打造適用於所有板型規格的 Unity 遊戲

在現今競爭激烈的遊戲市場中,盡可能接觸廣大目標對像比以往更為重要。您可以開發各種板型規格 (例如手機、平板電腦、折疊式裝置和電腦) 的遊戲,讓潛在玩家有更多的潛在玩家群,進而提高成功機率。

支援螢幕尺寸調整功能

如要支援不同的板型規格,遊戲必須可調整大小。調整大小功能可讓遊戲支援各種裝置設定,例如直向和橫向螢幕方向、多視窗模式,以及摺疊式裝置的折疊與展開狀態。

如果遊戲不支援所有視窗大小和方向設定,平台會在相容模式中為遊戲加上黑邊,並視需要向玩家顯示提示,再變更為不支援的設定。

圖 1.設定相容性對話方塊。

詳情請參閱「支援大螢幕大小調整功能」。

多視窗模式

圖 2.桌面型態和摺疊式裝置上的不同使用者介面。

多視窗模式可讓多個應用程式同時共用同一個畫面。應用程式可以並排或垂直並排顯示 (分割畫面模式)、以小視窗顯示一個應用程式並重疊在其他應用程式上 (子母畫面模式),或以可移動且可調整大小的獨立視窗顯示個別應用程式 (任意形式模式)。

為了避免遊戲在多視窗模式下執行時進入相容模式,請在 Unity 建構設定中啟用「可調整大小的視窗」選項,宣告遊戲能夠處理大小調整。

圖 3.Unity 的 Android 解析度和呈現方式設定。

螢幕凹口

螢幕凹口是部分裝置上的區域,會擴展到螢幕表面。剪影可讓您享有無邊框體驗,同時在裝置前方提供重要感應器的空間。

圖 4.螢幕凹口。

如要為遊戲提供無邊框體驗,請將遊戲設定為採用安全影格感知功能。查詢 Unity safeArea API,取得螢幕的安全區域 (以像素為單位),並視情況調整遊戲 UI 和使用者體驗,特別是針對使用者可互動的元素。

折疊型態

折疊式裝置可能處於各種不同的折疊狀態,例如 FLAT (完全展開) 或 HALF_OPENED (介於完全展開和完全關閉之間)。如果裝置處於 HALF_OPENED 狀態,則根據摺疊方向,該裝置可能有兩種型態:桌面型態 (水平摺疊) 和書本型態 (垂直摺疊)。使用桌面型態提升玩家的臨場感和參與度。

圖 5.採用桌面型態的遊戲,主要檢視畫面聚焦於螢幕的垂直部分,水平區塊。

如要實作桌面型態,請擴充預設的 Unity 活動,然後使用 Jetpack WindowManager 版面配置程式庫讓遊戲採用折疊機制

Unity 範例專案

Unity 範例專案是以 Unity 2D 示範專案「遺失加密」為基礎。範例專案示範如何在 Unity 中支援大螢幕的調整大小功能。支援大螢幕和折疊式裝置需要變更 Unity 建構選項,以及相機和 UI 畫布版面配置的版面配置。

您可以立即下載範例專案。此專案包含四個不同的場景:

  • 原始:支援基本的可調整大小功能
  • 錨定:與「原始」場景相同,但會根據各種顯示比例調整,避免螢幕凹口
  • HingeAware:與「錨定」情境相同,但支援桌面型態
  • 主選單:起始場景可導覽至其他場景,並完整支援所有裝置方向、折疊、展開和桌面型態

建構 Android 應用程式時,請選取所有場景,並將「主選單」場景設為起始場景。

圖 6. 「Mainmenu」場景可讓您前往桌面型態下的其他場景。

從可調整大小的視窗開始著手

在 Android 大螢幕應用程式中實作各種螢幕尺寸和長寬比的支援功能,確保遊戲或應用程式能在不同裝置上正確顯示。在 Unity 建構設定中設定「Resizable Window」屬性,讓遊戲可以調整大小和變更顯示比例 (請參閱「多視窗模式」一節)。調整相機和畫布的顯示比例,以符合不同螢幕的顯示比例。在「Build Settings」Plugins/Android/AndroidManifest.xml 檔案中查看專案設定。在專案的「原始」場景中,體驗可調整大小的全螢幕大小功能。

圖 7.「原圖」場景支援可調整大小的視窗功能。

處理螢幕凹口,取得全螢幕沉浸式體驗

讓遊戲運用整個螢幕,沉浸在遊戲中,提供更優質的使用者體驗。更新遊戲 UI 錨定和相機設定,自動配合螢幕大小。這樣一來,UI 元素即可根據螢幕大小維持相對位置。

「錨定」情境會使用 CameraAspectLock 指令碼,透過擴充活動 (請參閱 Assets/Plugins/Android/LargeScreenPlayableActivity.java) 回應裝置設定變更 (請參閱 Assets/Plugins/Android/LargeScreenPlayableActivity.java)。SafeZoneAPI 指令碼中展示了 Unity 的 safeArea API,這個指令碼會繫結至「錨定」場景中的 SafeZone 物件。

在折疊式裝置的內外螢幕上,以全螢幕模式顯示遊戲場景。
圖 8. 含有螢幕凹口的「錨定」情境。

針對折疊式裝置進行最佳化

Unity 範例專案的最後一個場景「HingeAware」包含 ConfigurationManager 物件,該物件會透過 Jetpack 程式庫 API擴充活動 (請參閱 Assets/Plugins/Android/LargeScreenPlayableActivity.java) 回應目標裝置的不同折疊狀態 (請參閱 Assets/Plugins/Android/LargeScreenPlayableActivity.java)。該情境會使用 PanelOnFold 指令碼,根據裝置的折疊狀態控制 UI,例如當裝置處於相機時,在桌面時調整底部控制器面板。

圖 9. 「HingeAware」情境支援桌面型態。