【程序猿】Unity Resources資源打包以及加載(二)

2022-01-29 騰訊GWB遊戲無界

  繼Unity Resources資源打包以及加載(一)後,本篇要實現動態加載。

  //模型預製體

        Globals.assetBundle_Perfab = new Dictionary();

        //模型UI

        Globals.assetBundle_UI = new Dictionary();

        //PPT

        Globals.assetBundle_Resources_Image = new Dictionary();

        Globals.assetBundle_Resources_Audio = new Dictionary();

        #if UNITY_EDITOR

            basePath = "file://" + Application.dataPath + "/ResourcesAssetBundle/";

        #elif UNITY_ANDROID  

            basePath="file://"+Application.persistentDataPath+"/ResourcesAssetBundle/";

        #endif

  IEnumerator LoadFromAssetBundle()

    {

        List assetBundleList = new List();

        foreach (var vp in VersionParam.vplist)

        {

            if (!vp.Filename.Contains(".manifest") && !vp.Filename.Equals("StreamingAssets"))

            {

                WWW wwwPrefab =new  WWW(@basePath + vp.Filename);

                yield return wwwPrefab;

                while (!wwwPrefab.isDone)

                {

                    message.text = message.text + "wwwPrefab return null";

                    yield return null;

                }

                if (!string.IsNullOrEmpty(wwwPrefab.error))

                {

                    message.text = message.text + "wwwPrefab error break"+wwwPrefab.error;

                    Debug.Log(wwwPrefab.error);

                    yield break;

                }

                else

                {

                    AssetBundle abPrefab = wwwPrefab.assetBundle;

                    assetBundleList.Add(abPrefab);

                    string[] type=vp.Filename.Split('_');

                    string typestr=type[type.Length-1];

                    switch (typestr)

                    {

                        case "prefab":

                            Globals.assetBundle_Perfab.Add(vp.Filename, abPrefab.LoadAsset(vp.Filename));

                            break;

                        case "ui":

                            Globals.assetBundle_UI.Add(vp.Filename, abPrefab.LoadAsset(vp.Filename));

                            break;

                        case "audio":

                            Globals.assetBundle_Resources_Audio.Add(vp.Filename, abPrefab.LoadAsset(vp.Filename));

                            break;

                        case "ppt":

                            Globals.assetBundle_Resources_Image.Add(vp.Filename, abPrefab.LoadAsset(vp.Filename));

                            break;

                    }

                }

            }

        }

        foreach (var abl in assetBundleList)

        {

            if (abl != null)

            {

                abl.Unload(false);

            }

        }

  注意:一定要Unload。打包和加載版本對比使用了MD5。

相關焦點

  • Unity Android 5.6版本Resources.Load效率的問題
    這個場景比較簡單,主要是在Resources文件夾下創建了一個有很多(650+)子節點的prefab,並且在運行時通過點擊按鈕調用Resources.Load進行資源加載。不過這一測不要緊,果然可以發現這個版本的Unity在調用Resources.Load加載資源的效率很低。大概要耗時1700ms!
  • Unity Android Plugin開發指南
    最後,工程的結構類似這樣:Assets└── Plugins    ├── Android    │   ├── AndroidManifest.xml    │   ├── android_sdk.jar    │   └── res    │       ├── values    │       └── drawable    └── unity_wrapper.dll
  • 達哥教你如何正確打開 Unity 2019 LTS
    決定要用哪一年的LTS當然就跟項目時程估算很有關聯,如果你的項目預估在2021年1月完成,那發布時的LTS版本就建議是2019 LTS,因為2020 LTS還沒出來。值得一提的是,DOTS體系內的Burst編譯程序倒是從預覽版轉為正式版了,對於Job System能直接給予非常明顯的性能優化效果。
  • Unity圖片資源處理
  • Android應用程式(APK)的編譯打包過程
    步驟中提到的工具如下表:名稱功能介紹在作業系統中的路徑aaptAndroid資源打包工具${ANDROID_SDK_HOME}/platform-tools/apptaidlAndroid接口描述語言轉化為.java文件的工具$
  • 如何利用Unity快速搭建訓練機器人數字孿生?
    在訓練完成後,我們接著使用 OpenVino 工具包將模型轉換為 OpenVino IR 和 Myriad Blob 格式,方便在 OAK-D 設備上加載模型並運行推理。最後一道流程是結合 spatial tiny YOLO 與 RL 模型。多虧我們的 Unity 插件,我們能夠在 Unity 內比較 ML-Agents 和 OAK-D 代理的推理成果。
  • Unity2018.3中文更新日誌詳解
    更多內容:https://blogs.unity3d.com/2018/10/08/optimizing-loading-performance-understanding-the-async-upload-pipeline/Memory Profiler內存消耗是關鍵性能指標,對於內存資源有限的平臺(如低端行動裝置)尤為重要。
  • Unity URP/SRP 渲染管線淺入深出【匠】
    它主要把渲染管線拆分成二層:URP是什麼?docs.unity3d.com/Packages/com.unity.render-pipelines.universal%408.2/manual/universalrp-builtin-feature-comparison.html
  • 【學習資源分享】翼次方羅馬戰士打包
    【學習資源分享】翼次方羅馬戰士打包課程學習請添加微信:78155163
  • Unity腳本與編輯器工具,開發省時必備利器
    所有映射關係均通過XML文件保存與加載。另外它還支持與資源商店一些其它的常用插件混合使用,例如PlayMaker、UFPS、Behavior Designer等。   地址:https://www.assetstore.unity3d.com/#!/content/21676
  • 遊戲士兵人形角色3D模型Unity遊戲素材資源
    人人素材社區-最專業的CG藝術交流網站今天小生為大家帶來的是遊戲士兵人形角色3D模型Unity遊戲素材資源一說到士兵是不是很快腦海裡就浮現出了反恐精英裡面的畫面想起了裡面的人物甚至想要趕快打開這個遊戲玩上一把呢不要著急哦還是先看看小生推薦的角色模型吧你會有不一樣的收穫哦
  • Unity高級知識點總結:性能優化與圖形渲染進階
    2、做好資源異步加載,實現一個實例化隊列,可以很大程度上減少卡頓。3、做好超量的模型和特效屏蔽,可以有效減輕cpu壓力。4、善用工具。比如Unity Profiler、Snapdragon Profiler等,針對性的對性能瓶頸進行優化。5、玩家頭頂血條的HUD要使用3D的,而不是UGUI。否則同屏玩家數量很多的時候Mesh合併開銷很大。
  • 實戰 用Unity快速開發太空飛機大戰(上)
    用unity動手先來試試一個簡單的太空飛機大戰吧。
  • 如何運用Unity製作VR全景漫遊?
    本文介紹了兩種方法來製作VR場景:方法一:通過6張小圖搭建的VR場景方法二:通過一張全景圖來搭建VR場景最後搭建場景的方法是相同的,可以小圖或者全景來充當場景。 Unity5.3.1 X64: http://unity3d.com/cn/get-unity/download/archivePTGui[可選]: 把全景圖轉成6個立方小圖 http://www.ptgui.com/download.htmlGoogle VR SDK For Unity: https://github.com/googlevr
  • Flutter打包發布
    Android打包和發布 1.1. 填寫應用配置1.1.1. 基本信息在之前講解應用程式的配置信息時,我們已經介紹過,這裡不再過多介紹1.1.2. 版本信息Flutter的版本信息在哪裡填寫呢?}替換為秘鑰庫的信息將 key.properties 文件加載到 keystoreProperties 對象中。
  • 漫步VR——Unity語音聊天室開發
    安裝:https://unity3d.com/cn/get-unity/download/archive。編譯Support包:unity可以很方便移植到多個平臺上,依賴的即是下載安裝對應unity版本的Support-for-Editor。
  • Unity實現UI信息跟隨場景移動縮放-海島奇兵2
    下面是要注意的事項: -- LUA material.mainTexture = ResourceManager:LoadTexture(EXPLORE_AB_NAME,textureName) -- C# // 加載紋理 public Texture2D LoadTexture(string bundleName, string texName
  • 遊記:CJ五日-Unity能做小遊戲?
    ^_^Tiny 自動實現了模塊化控制,能夠在遊戲首屏運行之後再加載後續資源(Lazy Loading),實現首包最小化。在打包的時候也可以選擇不同的模塊以進一步減少最終包體大小。支持一鍵打包,我在現場演示視頻中看到了導出菜單中的某信、某寶的 target。
  • Unity可編程渲染管線系列(二)自定義著色器(HLSL和核心庫)
    雖然GLSL用於默認著色器以及「渲染2,著色器基礎知識」(Shader Fundamentals),但Unity的新渲染管線著色器使用HLSL,因此我們也將其用於管線。這意味著我們必須將所有代碼放在HLSLPROGRAM和ENDHLSL語句之間。