Exemplo n.º 1
0
    /// <summary>
    /// 循环处理关系
    /// </summary>
    /// <param name="bundleName">Bundle name.</param>
    public void DisposeBundle(string bundleName)
    {
        if (mLoadHelper.ContainsKey(bundleName))
        {
            IABRelationMgr loader = mLoadHelper [bundleName];

            List <string> dependences = loader.GetDependences();

            for (int i = 0; i < dependences.Count; i++)
            {
                if (mLoadHelper.ContainsKey(dependences [i]))
                {
                    IABRelationMgr dependence = mLoadHelper [dependences[i]];

                    if (dependence.removeReference(bundleName))
                    {
                        DisposeBundle(dependence.GetBundleName());
                    }
                }
            }

            if (loader.GetReference().Count <= 0)
            {
                loader.Dispose();

                mLoadHelper.Remove(bundleName);
            }
        }
    }
Exemplo n.º 2
0
    public IEnumerator LoadABDependences(string bundleName, string refName, LoaderProgress progress)
    {
        if (!mLoadHelper.ContainsKey(bundleName))
        {
            IABRelationMgr loader = new IABRelationMgr();

            loader.Initialize(bundleName, progress);

            if (refName != null)

            {
                loader.AddReference(refName);
            }

            mLoadHelper.Add(bundleName, loader);

            yield return(LoadABs(bundleName));
        }
        else
        {
            if (refName != null)
            {
                IABRelationMgr loader = mLoadHelper[bundleName];

                loader.AddReference(bundleName);
            }
        }
    }
Exemplo n.º 3
0
    public Object[] GetMultiRes(string bundleName, string resName)
    {
        if (mLoadHelper.ContainsKey(bundleName))
        {
            IABRelationMgr loader = mLoadHelper [bundleName];

            Object[] tmpObjs = loader.GetMultiRes(resName);

            AssetObj tmpAssetObj = new AssetObj(tmpObjs);

            // 缓存里面 是否已经有这个包
            if (mLoadObj.ContainsKey(bundleName))
            {
                AssetResObj tmpRes = mLoadObj [bundleName];

                tmpRes.AddResObj(resName, tmpAssetObj);
            }
            else
            {
                // 没有加载过 这个包
                AssetResObj tmpRes = new AssetResObj(resName, tmpAssetObj);

                mLoadObj.Add(bundleName, tmpRes);
            }

            return(tmpObjs);
        }
        else
        {
            return(null);
        }
    }
Exemplo n.º 4
0
    /// <summary>
    /// Debugs A.
    /// </summary>
    /// <param name="bundleName">Scene/test.prefab</param>
    public void DebugAB(string bundleName)
    {
        if (mLoadHelper.ContainsKey(bundleName))
        {
            IABRelationMgr loader = mLoadHelper [bundleName];

            loader.DebuggerAsset();
        }
    }
Exemplo n.º 5
0
    public bool IsLoaddingFinish(string bundleName)
    {
        if (mLoadHelper.ContainsKey(bundleName))
        {
            IABRelationMgr loader = mLoadHelper [bundleName];

            return(loader.IsBundleLoadFinish());
        }
        else
        {
            Debug.Log("IABRelation no contain bundle==" + bundleName);
            return(false);
        }
    }
Exemplo n.º 6
0
    /// <summary>
    /// 全部删除
    /// </summary>
    public void DisposeAllBundleAndRes()
    {
        DisposeAllObj();

        List <string> keys = new List <string> ();

        keys.AddRange(mLoadHelper.Keys);

        for (int i = 0; i < mLoadHelper.Count; i++)
        {
            IABRelationMgr loader = mLoadHelper [keys [i]];

            loader.Dispose();
        }

        mLoadHelper.Clear();
    }
Exemplo n.º 7
0
    public void LoadAB(string bundleName, LoaderProgress progress, LoadABCallBack callback)
    {
        if (!mLoadHelper.ContainsKey(bundleName))
        {
            IABRelationMgr loader = new IABRelationMgr();

            loader.Initialize(bundleName, progress);

            mLoadHelper.Add(bundleName, loader);

            callback(mSceneName, bundleName);
        }
        else
        {
            Debug.Log("IABMgr contain bundle name ==" + bundleName);
        }
    }
Exemplo n.º 8
0
    public Object GetSingleRes(string bundleName, string resName)
    {
        // 表示 是否已经缓存了物体
        if (mLoadObj.ContainsKey(resName))
        {
            AssetResObj tmpRes = mLoadObj [bundleName];

            List <Object> tmpObj = tmpRes.GetResObj(resName);

            if (tmpObj != null)
            {
                return(tmpObj [0]);
            }
        }

        // 表示已经加载过bundle
        if (mLoadHelper.ContainsKey(bundleName))
        {
            IABRelationMgr loader = mLoadHelper [bundleName];

            Object tmpObj = loader.GetSingleRes(resName);

            AssetObj tmpAssetObj = new AssetObj(tmpObj);

            if (mLoadObj.ContainsKey(bundleName))
            {
                AssetResObj tmpRes = mLoadObj [bundleName];
                tmpRes.AddResObj(resName, tmpAssetObj);
            }
            else
            {
                // 没有加载过 这个包
                AssetResObj tmpRes = new AssetResObj(resName, tmpAssetObj);
                mLoadObj.Add(bundleName, tmpRes);
            }

            return(tmpObj);
        }
        else
        {
            return(null);
        }
    }
Exemplo n.º 9
0
    /// <summary>
    /// 加载assetBundle必须先加载manifest
    /// </summary> callback(sceneName,bundlename);返回上层 调用这个api
    /// <returns>The A.</returns>
    /// <param name="bundleName">Bundle name.</param>
    public IEnumerator LoadABs(string bundleName)
    {
        while (!IABManifestLoader.Instance.IsLoadFinish)
        {
            yield return(null);
        }

        IABRelationMgr loader = mLoadHelper [bundleName];

        string[] dependences = GetDependences(bundleName);

        loader.SetDependences(dependences);

        for (int i = 0; i < dependences.Length; i++)
        {
            yield return(LoadABDependences(dependences [i], bundleName, loader.GetProgress()));
        }

        yield return(loader.LoadAB());
    }
Exemplo n.º 10
0
	public IEnumerator LoadABDependences(string bundleName,string refName,LoaderProgress progress)
	{
		if(!mLoadHelper.ContainsKey(bundleName))
		{
			IABRelationMgr loader = new IABRelationMgr();

			loader.Initialize(bundleName,progress);

			if (refName != null)

			{
				loader.AddReference(refName);
			}

			mLoadHelper.Add(bundleName,loader);

			yield return LoadABs(bundleName);
		}
		else
		{
			if (refName != null)
			{
				IABRelationMgr loader = mLoadHelper[bundleName];

				loader.AddReference(bundleName);
			}
		}
	}
Exemplo n.º 11
0
	public void LoadAB(string bundleName,LoaderProgress progress,LoadABCallBack callback)
	{
		if (!mLoadHelper.ContainsKey (bundleName)) {
			IABRelationMgr loader = new IABRelationMgr ();

			loader.Initialize (bundleName, progress);

			mLoadHelper.Add (bundleName, loader);

			callback (mSceneName, bundleName);

		} else {
			Debug.Log ("IABMgr contain bundle name ==" + bundleName);
		}
	}