SerializeObject.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. namespace AtlasUtility
  2. {
  3. using UnityEditor;
  4. using UnityEngine;
  5. using System.IO;
  6. public class SerializeObject : MonoBehaviour
  7. {
  8. #region Variable
  9. public static string DefaultPath
  10. {
  11. get { return DefaultDirectory + DefaultName; }
  12. }
  13. public static string SerializeObjectPath
  14. {
  15. get { return AssetDatabase.GUIDToAssetPath(SerializeObjectGUID); }
  16. }
  17. public static string SerializeObjectGUID
  18. {
  19. get { return PlayerPrefs.GetString(Key_SerializeObjectGUID, ""); }
  20. }
  21. private static string DefaultName = "SerializeObject.prefab";
  22. private static string DefaultDirectory = "Assets/AtlasUtility/";
  23. private static string Key_SerializeObjectGUID = "AtlasUtility_SerializeObjectGUID";
  24. #endregion
  25. public static AtlasUtility GetAtlasUtility()
  26. {
  27. if (File.Exists(SerializeObjectPath))
  28. {
  29. return AssetDatabase.LoadAssetAtPath<AtlasUtility>(SerializeObjectPath);
  30. }
  31. else
  32. {
  33. Create();
  34. return AssetDatabase.LoadAssetAtPath<AtlasUtility>(SerializeObjectPath);
  35. }
  36. }
  37. public static void Create()
  38. {
  39. if (!Directory.Exists(DefaultDirectory))
  40. {
  41. Directory.CreateDirectory(DefaultDirectory);
  42. }
  43. GameObject serializeObject = new GameObject("AtlasUtility_SerializeObject");
  44. serializeObject.AddComponent<AtlasUtility>();
  45. PrefabUtility.CreatePrefab(DefaultPath, serializeObject);
  46. DestroyImmediate(serializeObject);
  47. PlayerPrefs.SetString(Key_SerializeObjectGUID, AssetDatabase.AssetPathToGUID(DefaultPath));
  48. }
  49. }
  50. }