Ejemplo n.º 1
0
    void LoadObjectFromBundle(string bundleName, string resName, LoadObjectCallBack callback)
    {
        if (loadedHelper.ContainsKey(bundleName))
        {
            IABRelationManager relation = loadedHelper[bundleName];
            Object             tempObj  = relation.GetSingleResource(resName);

            //缓存 tempObj
            AssetObj assetObj = new AssetObj(tempObj);

            if (!loadObjs.ContainsKey(bundleName))
            {
                AssetResObj tmpRes = new AssetResObj(resName, assetObj);
                loadObjs.Add(bundleName, tmpRes);
            }
            else
            {
                AssetResObj resObj = loadObjs[bundleName];
                resObj.AddResObj(resName, assetObj);
            }

            if (null != callback)
            {
                callback(tempObj);
            }
        }
        else
        {
            if (null != callback)
            {
                callback(null);
            }
        }
    }
Ejemplo n.º 2
0
    //加载一个具体资源时,先从loadObjs中找,如果没有的话再从loadedHelper中找,再没有的话再根据AssetBundle名字和地址用WWW下载
    public void LoadSingleObject(string bundleName, string resName, LoadObjectCallBack callback)
    {
        //表示是否已近缓存了物体
        if (loadObjs.ContainsKey(bundleName))
        {
            AssetResObj tmpRes = loadObjs[bundleName];
            Object      tmpObj = tmpRes.GetAssetObj(resName);
            if (null != tmpObj)
            {
                callback(tmpObj);
                return;
            }
        }

        //表示bundle已经加载过
        if (loadedHelper.ContainsKey(bundleName))
        {
            LoadObjectFromBundle(bundleName, resName, callback);
        }
        else
        {
            StartCoroutine(LoadAssetBundle(bundleName, (tmpBundleName) =>
            {
                LoadObjectFromBundle(bundleName, resName, callback);
            }));
        }
    }