PlatformReferenceManager.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. namespace AtlasUtility
  2. {
  3. using UnityEditor;
  4. using UnityEngine;
  5. using System.Collections.Generic;
  6. public class PlatformReferenceManager
  7. {
  8. public static void SwitchPlatform(Platform toPlatform)
  9. {
  10. List<string> fromList = new List<string>();
  11. List<string> toList = new List<string>();
  12. GetFromToList(toPlatform, fromList, toList);
  13. ReferenceManager.ChangeReference(true, fromList, toList);
  14. }
  15. public static void GetFromToList(Platform toPlatform, List<string> fromList, List<string> toList)
  16. {
  17. List<PlatformReferenceSet> referenceSetList = PlatformReferenceTable.ReadAllLine();
  18. for (int i = 0; i < referenceSetList.Count; i++)
  19. {
  20. referenceSetList[i].SwitchPlatform(toPlatform, fromList, toList);
  21. }
  22. }
  23. public static void RemoveReference(List<string> guidList)
  24. {
  25. List<PlatformReferenceSet> platformSetList = PlatformReferenceTable.ReadAllLine();
  26. for (int i = 0; i < platformSetList.Count; i++)
  27. {
  28. if (guidList.Contains(platformSetList[i].MobileReference.GUID))
  29. {
  30. platformSetList[i].MobileReference.GUID = "None";
  31. }
  32. if (guidList.Contains(platformSetList[i].DesktopReference.GUID))
  33. {
  34. platformSetList[i].DesktopReference.GUID = "None";
  35. }
  36. if (guidList.Contains(platformSetList[i].EditorReference.GUID))
  37. {
  38. platformSetList[i].EditorReference.GUID = "None";
  39. AssetDatabase.DeleteAsset(platformSetList[i].MobileReference.Path);
  40. AssetDatabase.DeleteAsset(platformSetList[i].DesktopReference.Path);
  41. AssetDatabase.Refresh();
  42. }
  43. if (!platformSetList[i].Valid)
  44. {
  45. platformSetList.RemoveAt(i--);
  46. }
  47. }
  48. PlatformReferenceTable.WriteAllLine(platformSetList);
  49. }
  50. public static PlatformReferenceSet GetMatchedReferenceSet(Texture2D texture)
  51. {
  52. string guid = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(texture));
  53. List<PlatformReferenceSet> referenceSetList = PlatformReferenceTable.ReadAllLine();
  54. return GetMatchedReferenceSet(guid, referenceSetList);
  55. }
  56. public static PlatformReferenceSet GetMatchedReferenceSet(string guid, List<PlatformReferenceSet> referenceSetList)
  57. {
  58. for (int i = 0; i < referenceSetList.Count; i++)
  59. {
  60. if (referenceSetList[i].MobileReference.GUID == guid || referenceSetList[i].DesktopReference.GUID == guid || referenceSetList[i].EditorReference.GUID == guid)
  61. {
  62. return referenceSetList[i];
  63. }
  64. }
  65. return null;
  66. }
  67. }
  68. }