AssetBoundle加载非预设资源

本文介绍了一个在Unity中使用协程从AB包加载资源的方法。通过定义一个IEnumerator类型的函数LoadNonObjFromAB,可以实现从指定的AB包URL下载资源,并将资源加载到指定的游戏对象上。该方法首先进行参数检查,然后使用WWW类下载AB包,最后使用AssetBundle类的LoadAsset方法加载资源。
1.定义一个协程LoadNonObjFromAB
IEnumerator LoadNonObjFromAB(string ABURL, GameObject go, string assetName)

参数含义:ABURL:要下载的AB包地址  go:用于测试,显示加载贴图  assetName:要加载的资源名称

IEnumerator LoadNonObjFromAB(string ABURL, GameObject go, string assetName)
        {
            //参数检查
            if(string.IsNullOrEmpty(ABURL) || go == null)
            {
                Debug.LogError("参数错误!");
            }
            using (WWW www = new WWW(ABURL))
            {
                yield return www;
                AssetBundle ab = www.assetBundle;    //获取AB包
                if(ab != null)
                {
                    if(assetName == "")
                    {
                        go.GetComponent<Renderer>().material.mainTexture = ab.mainAsset as Texture;
                    }
                    else
                    {

                        go.GetComponent<Renderer>().material.mainTexture = (Texture)ab.LoadAsset(assetName);  //替换贴图为下载的贴图
                        print(assetName);

                    }
                    //卸载AB包
                    ab.Unload(false);
                }
                else
                {
                    Debug.LogError("下载错误:"+www.error);
                }
            }
}

2.调用协程
 private void Start()
        {
            StartCoroutine(LoadNonObjFromAB(URL1, testGo, assetName1));
        }
 
  

(在调用之前要对参数初始化)

 

 

转载于:https://www.cnblogs.com/blackteeth/p/10152121.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值