Addressable 跟 assetBundle 不同在於
Addressable 完全不需要你去寫關於Load .bundle file的程式碼
所有的bundle load, 都由unity 背景幫你完成
你只需要在編輯器指定.bundle來源資料夾就好
要寫的code就只有
圖片文字勘誤, 實際為catalog.json
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