コード例 #1
0
 /// <summary>
 /// 一个资源改变了,会导致引用它的资源也改变,但是希望限制影响等级
 /// </summary>
 /// <param name="parentInfo"></param>
 /// <param name="prefabType">影响等级</param>
 private static void TransToParent(ABAssetInfo parentInfo, EnumAB prefabType)
 {
     queue.Clear();
     m_handleFiles.Clear();
     queue.Enqueue(parentInfo);
     //m_handleFiles 这个是用来破除 资源之间引用循环关系的
     while (queue.Count != 0)
     {
         var assetInfo = queue.Dequeue();
         if (assetInfo.m_cacheData.bundleType >= prefabType)
         {
             assetInfo.m_hasChildrenUpdate = true;
             var buildinfo = GetUpdateABBuild(assetInfo.m_cacheData.bundleType, assetInfo.m_cacheData.bundleId.sceneName);
             AddAsset(buildinfo, assetInfo.m_cacheData);
             m_handleFiles.Add(assetInfo.AssetPath);
             foreach (var parent in assetInfo.m_parent)
             {
                 if (!m_handleFiles.Contains(parent.AssetPath))
                 {
                     queue.Enqueue(parent);
                 }
             }
         }
     }
 }
コード例 #2
0
    private static ABBundleInfo GetUpdateABBuild(EnumAB bundleType, string sceneName = "")
    {
        ABBundleInfo build    = null;
        var          bundleId = new BundleID(m_curVersion, bundleType, sceneName);

        if (m_abbuildDic.ContainsKey(bundleId))
        {
            build = m_abbuildDic[bundleId];
        }
        else
        {
            build          = new ABBundleInfo();
            build.bundleId = bundleId;
            m_abbuildDic.Add(bundleId, build);
        }
        return(build);
    }
コード例 #3
0
    /// <summary>
    /// 只改引用自己  这儿用到的主要是uiatlas
    /// </summary>
    /// <param name="parentInfo"></param>
    /// <param name="prefabType"></param>
    private static void TransToSelf(ABAssetInfo parentInfo, EnumAB prefabType)
    {
        Queue <ABAssetInfo> queue = new Queue <ABAssetInfo>();

        queue.Enqueue(parentInfo);
        var buildinfo = GetUpdateABBuild(prefabType);

        while (queue.Count != 0)
        {
            var assetInfo = queue.Dequeue();
            if (assetInfo.m_cacheData.bundleType == prefabType)
            {
                AddAsset(buildinfo, assetInfo.m_cacheData);
                foreach (var parent in assetInfo.m_parent)
                {
                    queue.Enqueue(parent);
                }
            }
        }
    }
コード例 #4
0

        
コード例 #5
0
 public BundleID(int version, EnumAB bundeType, string tsceneName = "")
 {
     this.buildType = bundeType;
     this.version   = version;
     this.sceneName = tsceneName;
 }