Unity3DWebGL加載IIS服務器的AssetBundle

1.把Unity3D工程打包WebGL,將打出的包上傳到IIS網站,參考這篇博客

2.打包出AssetBundle包,這裏有幾個地方要注意一下,

 打包,可以通過代碼打包,但是我這裏爲了快速方便的進行測試,使用了AssetBundle Browser插件,在AssetStore下載導入這個插件之後,點擊Windows-AssetBundle Browser即可打開插件界面

 擴展名,爲了方便包的分類,可以給AssetBundle包設置擴展名,如果使用代碼打包可以一起設置,如果使用插件,在不寫代碼的情況下,需要在Unity裏手動設置,或者在插件界面右鍵-convert to variant設置一個擴展名,如果使用插件默認打包的話,打包出來的AB包是沒有擴展名的,代碼設置擴展名可以參考這篇博客

 IIS服務器MIME類型,無論你設置了什麼擴展名,都需要在IIS服務器裏添加MIME類型,擴展名爲 .+擴展名,類型統一設置爲 application/octet-stream ,如果沒有擴展名,在擴展名那一欄只用填一個 .即可

3.打出AB包之後,我們需要將AB包放入我們打出的WebGL文件夾,也就是用來建立網站的文件夾,如果你不確定到底是哪個文件夾,可以直接在IIS管理器裏右鍵對應網址,選中瀏覽就可以了,爲了方便,你也可以直接將打包的輸出路徑設置爲這個文件夾

這裏我將同一個AB包設置了不同的後綴名,用來測試加載功能

4.通過瀏覽器訪問這個AB包,在瀏覽器中直接輸入IP地址:端口號/文件名,即可訪問對應文件,端口號和IP地址可以直接在IIS網站上查詢到

5.在Unity裏通過代碼加載,

    public void LoadWebAB()
    {
        StartCoroutine("DownLoadAB", "http://192.168.1.5:8081/base");
    }
    IEnumerator DownLoadAB(string url)
    {
        WWW loader = new WWW(url);
        yield return loader;
        if (loader.error == null)
        {
            AssetBundle A = loader.assetBundle;
            GameObject testAB = A.LoadAsset<GameObject>("base");
            Instantiate(testAB);
        }
        else
        {
            Debug.Log("WWW.ERROR:" + loader.error);
        }
    }

這裏也有個地方要注意,因爲瀏覽器會自動補上Http://這個開頭,所以在瀏覽器訪問的時候是可以省去的,但是我們在代碼里加載一定要記得加上Http://,這樣才能正確訪問到對應的文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章