日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity 加载资源

發(fā)布時(shí)間:2023/12/20 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity 加载资源 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

直接把資源放在unity的目錄里是不行的 打包的時(shí)候 不會打進(jìn)去
要想打包到apk里 只有兩種選擇
1 放到 StreamingAssets 里 – Application.streamingAssetsPath
2 場景里有引用 他會自動打包進(jìn)apk里

資源放到預(yù)制體里 并且預(yù)制體沒在場景里 也不打包

先安裝
https://github.com/Unity-Technologies/AssetBundles-Browser.git
使用文檔
https://docs.unity.cn/Packages/com.unity.assetbundlebrowser@1.7/manual/index.html

創(chuàng)建兩個(gè)ab包
1包是建模
2包是預(yù)制體 里面1包里的模型

也就是說 包2 是依賴 包1 的

如果只加載包2 unity是不會自動加載包1的
所以需要自己加載依賴關(guān)系

就是這樣的
手機(jī)里沒找到相對應(yīng)的位置
apk安裝包解壓縮后 可以看到 ab包 在assets里

好 現(xiàn)在需要知道 ab包之間的依賴 咋辦

string urlmf = Path.Combine(Application.streamingAssetsPath, "Android"); AssetBundle ab3 = AssetBundle.LoadFromFile(urlmf); AssetBundleManifest abManifest = ab3.LoadAsset<AssetBundleManifest>("assetbundlemanifest"); string[] str1 = abManifest.GetAllDependencies("ab1");

注意
這個(gè) urlmf 是整個(gè)所有ab包的 也就是那個(gè)整個(gè)文件夾的
不是單獨(dú)某個(gè)ab包的 (單獨(dú)的加載不到)
舉個(gè)例子 你生成的是安卓的ab包

那么 你會發(fā)現(xiàn)
在生成的ab包里 有一個(gè) Android.manifest 文件
打開后 里面其實(shí)是 ab包之間的依賴關(guān)系

那如果現(xiàn)在想發(fā)包
哪寫內(nèi)容放到StreamingAssets 呢?
StreamingAssets 的特性是只讀的
如果你把StreamingAssets 里的內(nèi)容熱更新到 persistent 那就會存在兩份數(shù)據(jù)
去YooAsset群里問了下
群主的意思是

有一個(gè)原則,你可以參考。:首包保證玩家可以進(jìn)入游戲體驗(yàn)15分鐘即可。
其余內(nèi)容,可以后續(xù)更新。
后續(xù)更新有2種方式,1:邊玩邊下,2:解鎖新地圖或新副本下載。

如果ab包在服務(wù)器怎么辦
加載就行啦~

StartCoroutine(this.loadAB()); IEnumerator loadAB() {UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(@"http://10.0.16.118:5000/ab2");yield return request.SendWebRequest();GameObject go1 = DownloadHandlerAssetBundle.GetContent(request).LoadAsset<GameObject>("PrefabA");GameObject.Instantiate(go1); }

現(xiàn)在
如果你需要把下載到的ab包 存到 persistentDataPath 里 咋辦?
如果用普通下載到的 request.downloadHandler.data 直接 FileStream 寫入是不行的
會報(bào) NotSupportedException: Raw data access is not supported for asset bundles

需要這么寫

UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(@"http://10.0.16.118:5000/ab2"); FileInfo fileInfo = new FileInfo(Path.Combine(Application.persistentDataPath, "ab2")); var handler = new DownloadHandlerFile(fileInfo.FullName); request.downloadHandler = handler; request.disposeDownloadHandlerOnDispose = true;

重點(diǎn)是 DownloadHandlerFile

可以查看文件

總結(jié)

以上是生活随笔為你收集整理的Unity 加载资源的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。