1.從Package Manger里安裝Addressable
注意這里有Addressables和Addressables兩個包,前者是核心框架,處理跨平臺通用邏輯,比如用 地址(Address)來異步加載、卸載資源;自動做引用計數,避免資源泄漏;支持遠程加載(CDN)、本地緩存、分包更新等。后者是子模塊,告訴核心框架在 Android 上該怎么干,比如如何從APK的Asset/aa目錄讀取資源,如何從 OBB 或 AAB 的分包里加載資源;Android 平臺的路徑解析、IO 優化等。
2.進入Addressable Groups界面
默認只有一個Default Local Group分組,可以將要尋址的資源拖入,比如預制體,材質,精靈貼圖,場景等。可修改資源名稱。Path是資源路徑,Labels是標簽。比如同一張貼圖可以有兩張分辨率不同的貼圖。如下
3.創建示例場景
使用官方示例工程,打開BasicReference場景。Addressables-Sample/Basic /Basic AssetReference
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement;public class BasicReference : MonoBehaviour
{public AssetReference baseCube;public void SpawnThing(){baseCube.InstantiateAsync();}
}
4.設置打包平臺
新建兩個Build Profile, Windows和Android, Allow download over HTTP*都設置為如下。保證能訪問你本地的服務器。編輯器下驗證Addressable功能時,注意Switch Profile切換為Windows, 如果當前仍為Android平臺,那么編輯器下運行會丟失材質。
5.設置打包路徑和加載路徑
由于我們要模擬遠程加載資源包,所以這里直接設置成Remote. 默認會給你一個ServerData文件夾,和Assets文件夾同目錄,由于這里的開發平臺是Windows,所以是StandaloneWindow64.當你切換到安卓平臺,這里自動變為Android。
點擊Manage Profiles打開Addressables Profiles面板。當前使用的是Default分組,實際只用中可以新建多個分組,比如開發組和發布組。遠程加載路徑為本機IP加端口號8000, 本機地址可在控制臺下ipconfig查看
5.打包資源
直接打包,由于我設置的是Android環境,所以會在ServerData目錄下生成Android文件夾。
6.在本地啟動一個靜態服務器
我使用的是node.js + http-server。在控制臺輸入npm install -g http-server,安裝http-server模塊。完成之后到ServerData目錄,控制臺輸入http-server -p 8000 --cors --no-cache
7.手機上測試Addressable
保持安卓手機和電腦同一個局域網,測試正常。(卸載App, 將ServerData目錄下的Android文件夾剪切到別處,再安裝Apk, 運行,發現無法正常加載資源并報錯。將Android文件夾移回,運行App,正常)。