AtlasReferenceManager.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. namespace AtlasUtility
  2. {
  3. using UnityEditor;
  4. using UnityEngine;
  5. using UnityEditor.SceneManagement;
  6. using System;
  7. using System.IO;
  8. using System.Linq;
  9. using System.Collections.Generic;
  10. using System.Text.RegularExpressions;
  11. public class AtlasReferenceManager
  12. {
  13. public static void ChangeReference(List<AtlasReference> fromReferenceList, List<AtlasReference> toReferenceList)
  14. {
  15. List<string> toList = new List<string>();
  16. List<string> fromList = new List<string>();
  17. for (int i = 0; i < toReferenceList.Count; i++)
  18. {
  19. toList.Add(toReferenceList[i].Content);
  20. }
  21. for (int i = 0; i < fromReferenceList.Count; i++)
  22. {
  23. fromList.Add(fromReferenceList[i].Content);
  24. }
  25. ReferenceManager.ChangeReference(false, fromList, toList);
  26. }
  27. public static void EnableAtlas()
  28. {
  29. List<AtlasReference> fromReferenceList = new List<AtlasReference>();
  30. List<AtlasReference> toReferenceList = new List<AtlasReference>();
  31. List<AtlasReferencePair> referencePairList = AtlasReferenceTable.ReadAllLine();
  32. for (int i = 0; i < referencePairList.Count; i++)
  33. {
  34. AtlasReference atlasReference = referencePairList[i].AtlasReference;
  35. AtlasReference sourceAtlasReference = referencePairList[i].SourceAtlasReference;
  36. if (fromReferenceList.Contains(sourceAtlasReference))
  37. {
  38. int index = fromReferenceList.IndexOf(sourceAtlasReference);
  39. Debug.LogWarning($"重复的Sprite {atlasReference.DebugPath} {toReferenceList[index].DebugPath}");
  40. }
  41. fromReferenceList.Add(sourceAtlasReference);
  42. toReferenceList.Add(atlasReference);
  43. }
  44. ChangeReference(fromReferenceList, toReferenceList);
  45. }
  46. public static void DisableAtlas()
  47. {
  48. List<AtlasReference> fromReferenceList = new List<AtlasReference>();
  49. List<AtlasReference> toReferenceList = new List<AtlasReference>();
  50. List<AtlasReferencePair> referencePairList = AtlasReferenceTable.ReadAllLine();
  51. for (int i = 0; i < referencePairList.Count; i++)
  52. {
  53. fromReferenceList.Add(referencePairList[i].AtlasReference);
  54. toReferenceList.Add(referencePairList[i].SourceAtlasReference);
  55. }
  56. ChangeReference(fromReferenceList, toReferenceList);
  57. }
  58. public static void GetEnableFromToList(List<string> fromList, List<string> toList)
  59. {
  60. List<AtlasReference> fromReferenceList = new List<AtlasReference>();
  61. List<AtlasReference> toReferenceList = new List<AtlasReference>();
  62. List<AtlasReferencePair> referencePairList = AtlasReferenceTable.ReadAllLine();
  63. for (int i = 0; i < referencePairList.Count; i++)
  64. {
  65. AtlasReference atlasReference = referencePairList[i].AtlasReference;
  66. AtlasReference sourceAtlasReference = referencePairList[i].SourceAtlasReference;
  67. if (fromReferenceList.Contains(sourceAtlasReference))
  68. {
  69. int index = fromReferenceList.IndexOf(sourceAtlasReference);
  70. Debug.LogWarning($"重复的Sprite {atlasReference.DebugPath} {toReferenceList[index].DebugPath}");
  71. }
  72. fromReferenceList.Add(sourceAtlasReference);
  73. toReferenceList.Add(atlasReference);
  74. }
  75. for (int i = 0; i < toReferenceList.Count; i++)
  76. {
  77. toList.Add(toReferenceList[i].Content);
  78. }
  79. for (int i = 0; i < fromReferenceList.Count; i++)
  80. {
  81. fromList.Add(fromReferenceList[i].Content);
  82. }
  83. }
  84. public static void GetDisableFromToList(List<string> fromList, List<string> toList)
  85. {
  86. List<AtlasReference> fromReferenceList = new List<AtlasReference>();
  87. List<AtlasReference> toReferenceList = new List<AtlasReference>();
  88. List<AtlasReferencePair> referencePairList = AtlasReferenceTable.ReadAllLine();
  89. for (int i = 0; i < referencePairList.Count; i++)
  90. {
  91. fromReferenceList.Add(referencePairList[i].AtlasReference);
  92. toReferenceList.Add(referencePairList[i].SourceAtlasReference);
  93. }
  94. for (int i = 0; i < toReferenceList.Count; i++)
  95. {
  96. toList.Add(toReferenceList[i].Content);
  97. }
  98. for (int i = 0; i < fromReferenceList.Count; i++)
  99. {
  100. fromList.Add(fromReferenceList[i].Content);
  101. }
  102. }
  103. public static List<AtlasReferencePair> GetReferencePair(List<string> atlasGuidList)
  104. {
  105. List<AtlasReferencePair> resultList = new List<AtlasReferencePair>();
  106. List<AtlasReferencePair> referencePairList = AtlasReferenceTable.ReadAllLine();
  107. foreach (string guid in atlasGuidList)
  108. {
  109. foreach (var referencePair in referencePairList)
  110. {
  111. if (referencePair.AtlasReference.GUID == guid)
  112. {
  113. resultList.Add(referencePair);
  114. }
  115. }
  116. }
  117. return resultList;
  118. }
  119. public static void RemoveReferencePair(List<AtlasReferencePair> referencePairList)
  120. {
  121. List<AtlasReferencePair> pairList = AtlasReferenceTable.ReadAllLine();
  122. pairList.RemoveRange(referencePairList);
  123. AtlasReferenceTable.WriteAllLine(pairList);
  124. }
  125. }
  126. }