/// <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); } } } } }
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); }
/// <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); } } } }
public BundleID(int version, EnumAB bundeType, string tsceneName = "") { this.buildType = bundeType; this.version = version; this.sceneName = tsceneName; }