Unity部署至WebGL平台之AssetBundle加载

AssetBundle加载功能

(1)导入制作好的model模型,制作成prefab,小提示:需要将Modle的Rig属性设置为none,因为后面进行AB包加载的时候发现,带有动画属性的包,没有办法加载出来。

(2)导入官方免费打包助手 Asset Bundle Manager,没有此插件的并且不会下载的,评论区留邮箱,我会抽空发到您邮箱。

(3)如下图所示,点击build完成打包,相关的属性设置可以根据自己的需求来修改,平台一定要选WebGL.

Unity部署至WebGL平台之AssetBundle加载_第1张图片

(4)编写加载模块代码

    /// 
    /// 下载地址
    /// 
    public string strABUrl = @"http://127.0.0.1:7099/WebGL/";

    void Start()
    {
        //bundleNameList就是预设的名称列表,可以通过配置文件读取,也可以手动实例化,看你自己了
        for (int i = 0; i < bundleNameList.Count; i++)
        {
            StartCoroutine(DownloadBundleCoroutine(DoShowObj,
                strABUrl + bundleNameList[i] + ".unity3d", bundleNameList[i]));
        }
    }
    
    public IEnumerator DownloadBundleCoroutine(Action modelFound, string url, string modelName)
    {
        AssetBundle bundle = null;
        UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(url);
        request.SendWebRequest();
        while (!request.isDone)
        {
            Invoke(modelName, request.downloadProgress);
            yield return null;
        }

        bundle = DownloadHandlerAssetBundle.GetContent(request);
        GameObject model = null;
        if (bundle != null)
        {
            AssetBundleRequest newRequest = bundle.LoadAssetAsync(modelName);
            while (!newRequest.isDone)
            {
                Debug.Log("Loading");
                yield return null;
            }
            model = (GameObject)newRequest.asset;
        }
        modelFound(model);

        bundle.Unload(false);
        yield return null;
    }


    private void DoShowObj(GameObject go)
    {
        Instantiate(go);
    }

编写完成后,将此脚本挂载到场景中任意一个组件对象身上。

(5)打包,将打包文件部署到IIS服务器上,AB包的打包路径不是设置的IIS服务器路径,也请把资源放到服务器。

(6)输入IP访问自己的资源,查看加载是否完成。

Unity部署至WebGL平台之AssetBundle加载_第2张图片

你可能感兴趣的:(Unity3D+WebGL)