namespace AtlasUtility { using UnityEditor; using UnityEngine; using UnityEditor.SceneManagement; using System; using System.IO; using System.Linq; using System.Collections.Generic; using System.Text.RegularExpressions; public class AtlasReferenceManager { public static void ChangeReference(List fromReferenceList, List toReferenceList) { List toList = new List(); List fromList = new List(); for (int i = 0; i < toReferenceList.Count; i++) { toList.Add(toReferenceList[i].Content); } for (int i = 0; i < fromReferenceList.Count; i++) { fromList.Add(fromReferenceList[i].Content); } ReferenceManager.ChangeReference(false, fromList, toList); } public static void EnableAtlas() { List fromReferenceList = new List(); List toReferenceList = new List(); List referencePairList = AtlasReferenceTable.ReadAllLine(); for (int i = 0; i < referencePairList.Count; i++) { AtlasReference atlasReference = referencePairList[i].AtlasReference; AtlasReference sourceAtlasReference = referencePairList[i].SourceAtlasReference; if (fromReferenceList.Contains(sourceAtlasReference)) { int index = fromReferenceList.IndexOf(sourceAtlasReference); Debug.LogWarning($"重复的Sprite {atlasReference.DebugPath} {toReferenceList[index].DebugPath}"); } fromReferenceList.Add(sourceAtlasReference); toReferenceList.Add(atlasReference); } ChangeReference(fromReferenceList, toReferenceList); } public static void DisableAtlas() { List fromReferenceList = new List(); List toReferenceList = new List(); List referencePairList = AtlasReferenceTable.ReadAllLine(); for (int i = 0; i < referencePairList.Count; i++) { fromReferenceList.Add(referencePairList[i].AtlasReference); toReferenceList.Add(referencePairList[i].SourceAtlasReference); } ChangeReference(fromReferenceList, toReferenceList); } public static void GetEnableFromToList(List fromList, List toList) { List fromReferenceList = new List(); List toReferenceList = new List(); List referencePairList = AtlasReferenceTable.ReadAllLine(); for (int i = 0; i < referencePairList.Count; i++) { AtlasReference atlasReference = referencePairList[i].AtlasReference; AtlasReference sourceAtlasReference = referencePairList[i].SourceAtlasReference; if (fromReferenceList.Contains(sourceAtlasReference)) { int index = fromReferenceList.IndexOf(sourceAtlasReference); Debug.LogWarning($"重复的Sprite {atlasReference.DebugPath} {toReferenceList[index].DebugPath}"); } fromReferenceList.Add(sourceAtlasReference); toReferenceList.Add(atlasReference); } for (int i = 0; i < toReferenceList.Count; i++) { toList.Add(toReferenceList[i].Content); } for (int i = 0; i < fromReferenceList.Count; i++) { fromList.Add(fromReferenceList[i].Content); } } public static void GetDisableFromToList(List fromList, List toList) { List fromReferenceList = new List(); List toReferenceList = new List(); List referencePairList = AtlasReferenceTable.ReadAllLine(); for (int i = 0; i < referencePairList.Count; i++) { fromReferenceList.Add(referencePairList[i].AtlasReference); toReferenceList.Add(referencePairList[i].SourceAtlasReference); } for (int i = 0; i < toReferenceList.Count; i++) { toList.Add(toReferenceList[i].Content); } for (int i = 0; i < fromReferenceList.Count; i++) { fromList.Add(fromReferenceList[i].Content); } } public static List GetReferencePair(List atlasGuidList) { List resultList = new List(); List referencePairList = AtlasReferenceTable.ReadAllLine(); foreach (string guid in atlasGuidList) { foreach (var referencePair in referencePairList) { if (referencePair.AtlasReference.GUID == guid) { resultList.Add(referencePair); } } } return resultList; } public static void RemoveReferencePair(List referencePairList) { List pairList = AtlasReferenceTable.ReadAllLine(); pairList.RemoveRange(referencePairList); AtlasReferenceTable.WriteAllLine(pairList); } } }