開始使用 Unity 開發遊戲

本指南概述典型的遊戲開發週期。讀完以下內容後 一些實用的參考資源

使用 Unity 時,開發生命週期包含三個 階段:

  • 規劃與設計
  • 開發及測試
  • 發布並維護

規劃與設計

在規劃和設計階段,您將決定建構遊戲的方式。個人中心 判斷如何解決行動平台開發技術的難題。 找出開發時使用的工具和程序。

取得所有團隊成員的想法

選擇您的藝術、工程、設計、音訊和 以便辨識並記錄實作工作例如:

  • 藝術團隊可能會為角色規劃資產紋理和網格預算 和環境
  • 工程團隊可能會判斷 並依每個平台進行剖析
  • 因此,請設計出能提升遊戲體驗的遊戲機制。
  • 音源專家可能會審查這些音訊連續性的要求 UI、2D 和 3D 空間音效。
  • 正式版可以提供發布規定 確保團隊順利達成共識

專為行動裝置設計

行動平台的應用程式開發過程包含具體考量、 例如:

  • 可變的螢幕顯示比例
  • 耗電量
  • 熱能與處理器節流
  • 觸控輸入
  • 跨平台開發
  • 圖形 API (Vulkan 或 OpenGL ES)

若要進一步瞭解行動網頁設計的注意事項,請參閱 Unity 中的 Android 開發作業 和 Unity 的 Google Play 學習中心

開發及測試

在開發與測試階段,您需要建構遊戲 進行正式發布前的準備工作您對內部的某些部分項目進行了限制 Google Play 上的測試 以便做好萬全準備,以便符合推出規定只要調整 根據開發人員的選擇,在 Unity 中整理資產 Play Asset Delivery 和 Unity Addressable 有些人會將 Cloud Storage 視為檔案系統 但實際上不是

以下各節將說明專為開發人員設計的 Unity 工具和技術 協助您開發 Android 應用程式

顯示

轉譯是指從 Unity 場景繪製 3D 和 2D 素材資源的過程 。雖然 Unity 引擎會處理算繪作業, 使用 Android 平台時,請務必考量幾項因素。

紋理

根據您的目標,判斷是否需要最大的紋理大小 裝置。設定個人資料時 記憶體配置 瞭解變更目標可節省多少費用 材質大小

影格時間

如要避免 Android 裝置出現過熱情形,請設定影格時間 平均低於 21 毫秒某些時候,例如 像是載入或短劇式體驗 則可能超過 21 毫秒,但應維持在 21 毫秒以下 核心遊戲體驗的毫秒門檻。

在行動裝置平台上,如果沒有的話,強制 VSync 可以調節畫面更新率 達到最低目標以 60Hz 螢幕更新為例 您的遊戲影格速率為 60fps,如果不達成目標 30,就會 15.

許多 Android 裝置都配備螢幕刷新率 60Hz 和 120Hz。 指定更小的影格時間 (目標 10 毫秒) 的好處 60Hz 更新,5 毫秒 (120Hz) 但耗電量較高。

如要在 Unity 中為遊戲設定特定影格速率,請使用 Application.targetFrameRate

Android Frame Pacing 程式庫可協助您進行轉譯 因為應用程式需要較長的時間來呈現下一個影格 螢幕刷新率需求量對於 Unity 2021 以上版本, 啟用 Android 影格使用速度會將螢幕刷新率設為 選擇最符合目標影格速率的內容這樣可確保遊戲不會 不必要的螢幕更新會浪費電池電力。

如要啟用程式庫,請在「專案設定」>播放器,低於 適用於 Android 的設定,勾選「Optimized Frame Pacing」核取方塊。

顯示「Project Settings」> 的對話方塊播放器設定 >最佳化 Fame 使用速度
圖 1. 最佳化影格使用速度位於 Unity 2019.2 以上版本的「Player Settings」

Vulkan API

Vulkan 是跨平台的高效能 3D 相較於 OpenGL ES,圖形 API 耗用的資源較少。Unity 可以使用 Vulkan 有兩個不同方式

Auto Graphics API

你可以將 Auto Graphics API 與 Vulkan 搭配使用,但兩者可能會有不同 會因安裝的 Unity 版本而異。你可以選取 方法是依序前往「專案設定」>播放器 >轉譯

選擇要使用哪個 Unity 版本時,請注意下列事項 而是使用:

  • Unity 2021.1 以下版本不支援將 Vulkan 與 Auto 搭配使用 圖形 API。Unity 嘗試使用 OpenGL ES 3.2。如果裝置不支援 OpenGL ES 3.2,Unity 會依序改回使用 OpenGL ES 3.1、3.0 或 2.0。
  • Unity 2021.2 以上版本優先使用 Vulkan。如果裝置 不支援 Vulkan,Unity 會改回使用 OpenGL ES 3.2、3.1、3.0 或 2.0。
專案設定 >播放器設定 >轉譯 >Auto Graphics API
圖 2. Auto Graphics API 設定。

手動圖形 API

或者,您也可以停用 Auto Graphics API,手動啟用 Vulkan。 如果您目前使用 Unity 2021.1 或先前版本,就無法使用這個平台 Vulkan。

如果這份清單中的 Vulkan 順序高於 OpenGL ES,Unity 會先嘗試使用 Vulkan。如果裝置不支援 Vulkan,Unity 將透過 OpenGL ES 執行。 如要進一步瞭解 Android 上的 Vulkan 相關詳細資訊,請參閱「開始使用 Vulkan」 如何使用新型圖形 API 並提升遊戲效能。

專案設定 >播放器設定 >轉譯 >圖形 API
圖 3. 在 Auto Graphics API 的情況下手動設定圖形 API 已停用。Vulkan 是第一選擇。Unity 改回使用 OpenGL ES 3.0。

繪製呼叫數

畫面上顯示的所有內容都與一或多個繪製呼叫相關聯。啟用 行動平台,應最佳化並減少繪製呼叫次數 您傳送至圖形處理器 (GPU)。

繪製通話的概念與置於交通號誌的車輛類似。在 燈光會變成綠色,表示可以通過特定數量的車輛,在開燈前通過 並輸入變更內容指示燈變成黃色後,表示您已經達到理想目標影格 時間 (21 毫秒) 而當燈變紅後,你達到了 33 影格時間限制為毫秒任何會影響下一個轉譯影格的內容 最終影格速率就會低於目標 30 FPS

如要瞭解如何改善遊戲中的繪製呼叫效能, 請參閱 批次處理 請參閱 Unity 支援服務的這篇文章。

陰影

陰影投放繪製呼叫是最耗用 GPU 大量的 GPU GPU 作業時間降低陰影投放成本 繪製呼叫,嘗試運用硬化而非柔和陰影。如果 對於低階裝置而言,這仍然耗用大量 GPU 資源,因此建議使用 陰影而非硬陰影

紋理

建議的紋理 Android 上 RGB 和 RGBA 紋理的壓縮格式為 ASTC。在 Unity 中 您應該在 Android 上使用的最小紋理壓縮選項 就是 ETC2您可以改回使用 ETC2,做為 。

如需各平台支援格式的完整清單,請參閱 Unity 說明文件: 手動:建議、預設和支援的紋理格式 (依平台區分)

使用者介面和顯示比例

您可以使用 Unity 應用程式 裝置模擬器 預覽各種裝置螢幕解析度、方向和 顯示比例。即可切換遊戲檢視模式 和「裝置模擬器」檢視畫面

這項工具的預覽畫面請見 使用 Unity 中的裝置模擬器模擬遊戲!

圖 4. 搭載 Trivial Kart 的裝置模擬器。

如要查看 Trivial Kart 原始碼,請前往 games-samples 管理 GitHub 上的設定

如要快速驗證 在下拉式選單中選取裝置選項,即可使用裝置模擬器檢視畫面 選單:

專案設定 >播放器設定 >最佳化影格使用速度
圖 5. 裝置模擬器支援在編輯器中變更裝置 以便及早發現設計問題。
,瞭解如何調查及移除這項存取權。
專案設定 >播放器設定 >最佳化 Fame 使用速度
圖 6.請先勾選「啟用預先發布套件」 下載裝置模擬器套件。

如要進一步瞭解 Unity 的 UI 最佳化技巧,請參閱下列的教學課程: Unity:最佳化 Unity UI

物理學

Unity 內建 Nvidia PhysX 引擎。預設設定 可能相當昂貴,因此請留意以下幾點:

  • 考量目標影格速率,並據此設定固定時間步。 預設值為 0.02 毫秒或 50Hz。可以提高到 0.03 或 至少 30 FPS 的目標
  • 考慮簡化網狀協調器並盡量減少圖層衝突 判斷特定圖層遊戲物件之間互動的矩陣 。

如需深入瞭解 物理設定 以及手機遊戲的最佳化調整 最佳化手機遊戲電子書 從 Unity 的應用程式

個人資料

應用程式開發人員通常會忽略或忽略分析作業,直到應用程式完成為止 就會引發嚴重故障我建議你安排專屬的時間 為整個程序剖析時間,並且運用下列最佳做法:

  • 找出開發期間,何時可以分配剖析資料 而不是隨心所欲隨機搭配
  • 儲存設定檔快照,以便與 Unity 設定檔分析工具
  • 在目標裝置上建立個人遊戲資料,準確掌握遊戲的運作方式 遊戲在目前的開發階段能發揮成效。
  • 剖析遊戲的不同部分。
  • 剖析玩家的遊戲玩法。(不要只分析遊戲內容)。 當應用程式處於閒置狀態或暫停畫面上)。
  • 遊戲執行一段時間後,設定檔處於持續模式 有助於找出使用 Android 行動應用程式時 表示裝置

您可以單獨或搭配使用下列剖析工具。

  • Unity Profiler Unity 分析器具備完全整合的效能 這項工具可針對 Unity 編輯器中的程式碼執行 會連線至執行開發模式版本的獨立 Android 裝置。

  • Android GPU 檢查器的 Android GPU 檢查器 (AGI) 可用來執行影格層級偵錯。AGI 也 分析系統服務,包括 GPU、CPU、記憶體、電池和 GPU 計數器。

如要進一步瞭解如何在 Unity 中剖析遊戲,請觀看影片 Unity 剖析簡介 或閱讀 Unity 遊戲分析終極指南, 都可透過 Unity 安裝

記憶體管理

Android 程序會共用目標裝置的可用記憶體。請 目標測試裝置有充足記憶體時,設定檔記憶體用量 再複習一下,機構節點 是所有 Google Cloud Platform 資源的根節點以一致的方式執行記憶體測試 方便您比較工作階段和記憶體用量趨勢 才是正確的做法

編寫以 C# 編寫的指令碼時,請留意使用字串 字串比較,以及字串相關物件的分配 (例如 JSON) 遊戲設定的檔案)。這些容器會產生頻繁的記憶體配置 對資料片段化的貢獻

建議使用 StringBuilder 類別是大字串操控的類別,而非就地串連 字串 (例如 "this" + "is" + "a" + "bad" + "idea" 和 StringBuilder.Concat() 函式呼叫)。

如要進一步瞭解字串,請參閱 字串和文字

根據偏好評估 TextAsset 和 JSON 文字資源 ScriptableObject 類型。ScriptableObjects 可處理跨情境資料儲存空間 且可讓使用者修改「編輯器即播放」時間

使用替代預設值的討論 適用於行動裝置最佳化的 JSON 處理常式,請參閱相關文章 網路遊戲中隱藏的最佳化功能

使用 Memory Advice API 來判斷您的記憶體用量。API 提供停止狀態指標,表示高、正常和低記憶體用量。個人中心 訂閱指標以掌握最新動態 目前價格 狀態。收到紅色訊號時,請考慮減少遊戲物件 集區或快取直播期間,在遊戲遙測中加入這個背景資訊 運作及審查成效指標

進一步瞭解 Android 裝置的記憶體組織和 Unity 做法 可搭配,手錶 瞭解 Android 記憶體用量 (資料來源:2018 年 Google I/O 大會)。 影片會逐步解說幾種記憶體問題類型,以及記憶體不足時的因應方式 殺手就會生效

垃圾收集

代管記憶體環境中的垃圾收集會清除未使用的記憶體 可針對應用程式回收的片段。追蹤 垃圾收集最佳做法 避免不必要的記憶體資源分配

舉例來說,您可以建立遊戲物件集區,而非使用「隨選」 分配 (GameObject.Instantiate)。如果是大型集區,請考慮 分配多個影格,降低遊戲 在入門級 Android 裝置上沒有回應。

假設以下程式碼片段適用於叫用的簡易協同程式 獨角獸的開始:

// Option 1: Bad for memory management - causes allocation each iteration
IEnumerator UpdateEnemyTarget() {
  while (enabled) {
    yield return new WaitForSeconds(1.0f);
    // Some intermittent function check
  }
}

// Option 2: Better for memory management - allocation of yield instruction once, reused each iteration
private YieldInstruction waitForSecond = new WaitForSeconds(1.0f);
IEnumerator BetterUpdateEnemyTarget() {
  while (enabled) {
    yield return waitForSecond;
    // Some other intermittent function
  }
}

你可以 編輯 MonoBehaviour 範本檔案來移除預設的 Start()Update() 虛設常式函式,可避免不慎留空 功能

如需 MonoBehaviour 事件的執行順序總覽,請參閱 事件函式的執行順序 。如要進一步瞭解記憶體管理,請參閱 課程 Unity 中的記憶體管理

如需手機遊戲效能最佳化提示,請參閱 最佳化手機遊戲效能:Unity 頂尖工程師提供的剖析、記憶體和程式碼架構相關提示

Prefab 集區

CPU 影格時間突然增加,幾乎完全是由 Prefab 例項建立期間發生的原因 遊戲過程考慮為拋棄物預先打造物件集區, 角色和視覺效果,後再進入遊戲,減少或減少 減少啟動的 CPU 用量高峰也可使用額外的最佳化功能 會在多個「初始化影格」上載入期間 或介紹影片

您可以在 Unity 資產中查詢許多第三方集區資產 商店 與遊戲物件集區管理相關。另外,只要應用程式、服務詳情請見 Unity Learn 中的物件集區簡介

資產提供

應用程式首次運作時,系統可能設有大小限制 部署到 Google Play視遊戲的大小和性質而定 可能需要部分或所有的遊戲資源 (角色模型、環境 例如 UI 元素等等),讓玩家享受您提供的體驗。

您可以使用 Play Asset Delivery (PAD) 服務,用來管理遊戲在安裝期間所需的資產。 快速追蹤與隨選Unity Asset Bundle 經過整合,能夠支援 PAD 執行完畢,您可以用這個工具指定要要放送的元素。

Addressable

設定動態資源,例如偏好設定、紋理和音效 檔案,現在只要準備 並檢查 Addressable 命名系統可定址 素材資源安排方式與建構和載入方式的差異 內容Addressable 系統會取代 Resources 資料夾和資產 這些套件可簡化資產參照方式,並在執行階段載入資產。

如需範例,請參閱 使用 Addressable 套件的示範專案 。如要進一步瞭解 Addressable 的開發情形,請參閱 Unity 網誌的 Addressable 資產系統

使用 Addressable 素材資源版面配置, 郵件分類的數量太少或 加入通用套件中的資產過多。如要進一步瞭解內容管理,請造訪 Addressable,請參閱 使用 Addressables 簡化內容管理流程

您可以設定 獨立示範並嘗試不同的學習模式 熟悉 Addressable 系統您也可以查看這個開放原始碼專案 適用於 Unity 2019.3 以上版本的 BuildLayout Explorer, 並檢查buildlayout.txt Addressable。

Chop Chop 為 Unity Open Project 的資產,是用 用於所有載入和卸載的 Addressable 系統。詳情請見 使用可定址素材資源包裝內容 |開啟專案 Devlog 參閱逐步操作說明和設定 Addressable 套裝組合。

在 Chop Chop 專案中,預設會載入的唯一場景, 場景,已設為使用 AssetReferences,而非直接連結至 專案 (場景、PrefAb 等)

Unity 的開放式專案:Chop Chop 檔案 可在 GitHub 取得。雖然專案已經處於開發階段, 但您仍可使用 Git 存放區和說明文件。

第三方外掛程式

如果使用第三方外掛程式,例如 Unity Asset 中的外掛程式 儲存,請務必檢查資料夾,並移除不需要的素材資源 Resources 資料夾。在建構程序中,Unity 會收集所有 「Resources」資料夾內的資產並封裝成單一 且可在執行階段存取這會增加最終的套裝內容 這通常不是必要的

如要快速找到所有資源資料夾,請在區塊中搜尋 Resources 專案 面板。然後選取各個項目,即可辨識內含內容,以及是否包含 需要為新應用程式啟用容器版本

圖 7. 可能有多個 Resources 資料夾 從 Unity Asset Store 下載的資料夾尋找潛伏。清理 應避免將這類 SDK 封裝在應用程式套件中。

發布並維護

準備好推出手機遊戲時,請決定 如何發布應用程式、如何進行 Alpha 和 Beta 版測試 成效

分析受限版本的意見回饋

您可以只向部分目標對象推出應用程式,並大規模進行 Beta 版測試 或在所有市場全面發布遊戲。內建 您可以運用較新版本的功能來微調應用程式效能 即時目標對象和裝置集合

舉例來說,您可以使用 Unity 適用的 Android Performance TunerUnity 專用 Google Analytics ,取得應用程式效能和玩家趨勢分析。 您的開發團隊可以調整和推送更新您也可以使用 運用 Analytics 資料為續集或 類別。

Alpha 版和 Beta 版測試

Google Play 管理中心:您可以做好公開準備 Alpha 和 Beta 版測試版本 僅供部分目標對象使用 正式發布前審查變更者: 您可一次解決所有最終問題 並從中收集初步意見回饋,並在開始著手前回覆 並推出全球版本

您的 Unity 版本是透過 Android App Bundle 發布。如需相關資訊, 請參閱 手動:提交至 Google Play ,這也會說明從 APK 檔案到 AAB 的變更 格式。

監控及追蹤

在遊戲的 LiveOps 和發行階段,您可以使用 Android 版 Android Vitals 會協助追蹤 並在關閉期間可能無法使用的裝置效能問題。 詳情請觀看影片 「觸及率、裝置與 Android Vitals」為遊戲提供的新功能

大型開發團隊通常會有獨特且自訂的遊戲遙測管道 提供裝置效能相關指標。別忘了善用 的 Android Performance Tuner (APT) 和對應的 Unity 外掛程式,可以支援與影格速率相關的撥入指標。 圖形擬真度、載入時間和放棄載入的速度跟著 逐步指南 將 Android Performance Tuner 整合至 Unity 遊戲

遊戲生命週期不會停止。 監控、維護及回應效能和意見回饋至關重要 獲得滿意的使用者、正面評價,以及對自家遊戲的最終採用情形 所有市場。