コード例 #1
0
ファイル: IABManager.cs プロジェクト: IManual/Learn
    /// <summary>
    /// 释放一个包的资源,并且将包进行卸载,不会对其他有依赖的包进行卸载,但不会卸载已加载的资源
    /// </summary>
    public void UnloadBundle(string bundleName)
    {
        if (loadHelperDic.ContainsKey(bundleName))
        {
            IABRelationManager loader = loadHelperDic[bundleName];

            List <string> depences = loader.GetDependence();

            //先卸载依赖关系
            for (int i = 0; i < depences.Count; i++)
            {
                if (loadHelperDic.ContainsKey(depences[i]))
                {
                    IABRelationManager dependence = loadHelperDic[depences[i]];

                    if (dependence.RemoveRefference(bundleName))
                    {
                        UnloadBundle(dependence.GetBundleName());
                    }
                }
            }
            if (loader.GetRefference().Count <= 0)
            {
                loader.Dispose();

                loadHelperDic.Remove(bundleName);
            }
        }
    }
コード例 #2
0
    public void DisposeBundle(string bundleName)
    {
        if (loadHelper.ContainsKey(bundleName))
        {
            IABRelationManager loader = loadHelper[bundleName];

            List <string> depences = loader.GetDependence();

            for (int i = 0; i < depences.Count; i++)
            {
                if (loadHelper.ContainsKey(depences[i]))
                {
                    IABRelationManager depedences = loadHelper[depences[i]];

                    if (depedences.RemoveRefference(bundleName))
                    {
                        DisposeBundle(depedences.GetBundleName());
                    }
                }
            }

            if (loader.GetRefference().Count <= 0)
            {
                loader.DisPose();
                loadHelper.Remove(bundleName);
            }
        }
    }