Unity3DWebGL加载IIS服务器的AssetBundle

1.把Unity3D工程打包WebGL,将打出的包上传到IIS网站,参考这篇博客

2.打包出AssetBundle包,这里有几个地方要注意一下,

 打包,可以通过代码打包,但是我这里为了快速方便的进行测试,使用了AssetBundle Browser插件,在AssetStore下载导入这个插件之后,点击Windows-AssetBundle Browser即可打开插件界面

 扩展名,为了方便包的分类,可以给AssetBundle包设置扩展名,如果使用代码打包可以一起设置,如果使用插件,在不写代码的情况下,需要在Unity里手动设置,或者在插件界面右键-convert to variant设置一个扩展名,如果使用插件默认打包的话,打包出来的AB包是没有扩展名的,代码设置扩展名可以参考这篇博客

Unity3DWebGL加载IIS服务器的AssetBundle_第1张图片

Unity3DWebGL加载IIS服务器的AssetBundle_第2张图片

 IIS服务器MIME类型,无论你设置了什么扩展名,都需要在IIS服务器里添加MIME类型,扩展名为 .+扩展名,类型统一设置为 application/octet-stream ,如果没有扩展名,在扩展名那一栏只用填一个 .即可

Unity3DWebGL加载IIS服务器的AssetBundle_第3张图片

3.打出AB包之后,我们需要将AB包放入我们打出的WebGL文件夹,也就是用来建立网站的文件夹,如果你不确定到底是哪个文件夹,可以直接在IIS管理器里右键对应网址,选中浏览就可以了,为了方便,你也可以直接将打包的输出路径设置为这个文件夹

Unity3DWebGL加载IIS服务器的AssetBundle_第4张图片这里我将同一个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("base");
            Instantiate(testAB);
        }
        else
        {
            Debug.Log("WWW.ERROR:" + loader.error);
        }
    }

这里也有个地方要注意,因为浏览器会自动补上Http://这个开头,所以在浏览器访问的时候是可以省去的,但是我们在代码里加载一定要记得加上Http://,这样才能正确访问到对应的文件

你可能感兴趣的:(Unity3D)