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://,這樣才能正確訪問到對應的文件