Addressable 基本概念 (version 1.18.15)

Addressable 跟 assetBundle 不同在於

Addressable 完全不需要你去寫關於Load .bundle file的程式碼

所有的bundle load, 都由unity 背景幫你完成

你只需要在編輯器指定.bundle來源資料夾就好

要寫的code就只有

T result = await Addressables.LoadAssetAsync<T>("Addressable Name").Task;

Addressable Group 設置

圖片文字勘誤, 實際為catalog.json

Addressable 相同Key的狀況

Addressable 中的 Addressables.LoadAssetAsync<TResource>("Addressable Name")

只會讀取路徑(Path)由小到大Sort出來的第一個結果

(恰巧Naninovel只使用此函式)

因此要達成切換版本, 只要在資源前方加一個數字開頭的資料夾, 確保路徑sort就能達成切換

簡 單 粗 暴

以下圖為例, 必定取得的內容為EventCG_0

又或者使用是使用 Addressables.LoadAssetsAsync<T>("Addressable Name", null)

可使用以下這樣的命名安排資源

如此的話,配合以下指令, 我只要控制id我就能取得我要的版本貼圖了 (0 = Path_0_pix , 1 = Path_1_Light , 2 = Path_2_Universal)

var sprite[id] = await Addressables.LoadAssetsAsync<Sprite>(addressLocate, null).Task;

但以上有個缺點, 就是所有的包都要在, 否則會出錯無法抓取

原因是該指令抓取了所有包的資源, 但你只選擇了其中一個

補充

要避免其中一個包不在就無法回傳值的狀況

只要加上最後一個參數false即可, 即為以下

var sprite[id] = await Addressables.LoadAssetsAsync<Sprite>(addressLocate, null, false).Task;

而且遺失任何一個包, 皆不影響id的順序, 僅會造成該id資源無效, 因此可以安心的使用資料夾對應id