Example #1
0
    /// <summary>
    /// 异步加载asset资源
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="assetPath"></param>
    /// <param name="objName"></param>
    /// <param name="callBack"></param>
    /// <returns></returns>
    public static IEnumerator LoadAsyncAssetBundles <T>(string assetPath, string objName, LoadCallBack <T> callBack) where T : Object
    {
        assetPath = assetPath.ToLower();
        AssetBundleCreateRequest assetRequest = AssetBundle.LoadFromFileAsync(Application.dataPath + "/AssetBundles/" + assetPath);

        yield return(assetRequest);

        if (assetRequest == null && callBack != null)
        {
            callBack.loadFail("加载失败:指定assetPath下没有该资源");
        }
        AsyncListAssetBundle.Add(assetRequest.assetBundle);
        AssetBundleRequest objRequest = assetRequest.assetBundle.LoadAssetAsync <T>(objName);

        yield return(objRequest);

        AsyncListAssetBundle.Remove(assetRequest.assetBundle);
        assetRequest.assetBundle.Unload(false);
        if (objRequest == null && callBack != null)
        {
            callBack.loadFail("加载失败:指定assetPath下没有该名字的obj");
        }
        T obj = objRequest.asset as T;

        if (obj != null && callBack != null)
        {
            callBack.loadSuccess(obj);
        }
    }