diff --git a/Assets/02.InformationSave/RunTime/Abstract/AbstractInformation.cs b/Assets/02.InformationSave/RunTime/Abstract/AbstractInformation.cs
index d11c450..3a96d8e 100644
--- a/Assets/02.InformationSave/RunTime/Abstract/AbstractInformation.cs
+++ b/Assets/02.InformationSave/RunTime/Abstract/AbstractInformation.cs
@@ -17,7 +17,7 @@ namespace Stary.Evo.InformationSave
///
/// 配置文件存储路径
///
- string path = "Assets/02.InformationSave/RunTime/Data/ScriptObjectSaveData.asset";
+ string path = "InformationSaveData/ScriptObjectSaveData";
public virtual void Add()
{
@@ -51,6 +51,7 @@ namespace Stary.Evo.InformationSave
int index = _list.FindIndex(n => n.desc == desc);
if (index != -1) Switch(index);
}
+
#region Editor
#if UNITY_EDITOR
@@ -58,8 +59,8 @@ namespace Stary.Evo.InformationSave
public void UpdateInformation()
{
String sceneNmae = gameObject.scene.name;
- ScriptObjectSave scriptObjectSaveData = AssetDatabase.LoadAssetAtPath(path);
- if(scriptObjectSaveData == null)
+ ScriptObjectSave scriptObjectSaveData = Resources.Load(path);
+ if (scriptObjectSaveData == null)
{
Debug.LogError("ScriptObjectSaveData配置文件丢失");
return;
@@ -84,41 +85,39 @@ namespace Stary.Evo.InformationSave
{
String sceneNmae = gameObject.scene.name;
// 加载 ScriptObjectSaveData
- ScriptObjectSave scriptObjectSaveData = AssetDatabase.LoadAssetAtPath(path);
- if(scriptObjectSaveData != null)
+ ScriptObjectSave scriptObjectSaveData = Resources.Load(path);
+ if(scriptObjectSaveData == null)
{
- if(scriptObjectSaveData.dic == null)
+ scriptObjectSaveData = CheckAndCreateFoldersAndAsset();
+ Debug.Log("创建了ScriptObjectSaveData文件");
+ }
+
+ if (scriptObjectSaveData.dic == null)
+ {
+ Debug.LogError("ScriptObjectSaveData的dic为空");
+ return false;
+ }
+
+ // 检查是否已经存在相同的键
+ if (scriptObjectSaveData.dic.ContainsKey(sceneNmae + gameObject.name))
+ {
+ // 如果存在,选择是否替换原有的 List
+ if (UnityEditor.EditorUtility.DisplayDialog("提示", "数据集下已有相同名称的物体数据\n是否覆盖更新!!!\n" + "场景名:" + sceneNmae + "\n物体名:" + gameObject.name, "确定", "取消"))
{
- Debug.LogError("ScriptObjectSaveData的dic为空");
- return false;
- }
- // 检查是否已经存在相同的键
- if (scriptObjectSaveData.dic.ContainsKey(sceneNmae + gameObject.name))
- {
- // 如果存在,选择是否替换原有的 List
- if(UnityEditor.EditorUtility.DisplayDialog("提示", "数据集下已有相同名称的物体数据\n是否覆盖更新!!!\n"+ "场景名:"+ sceneNmae + "\n物体名:"+gameObject.name, "确定", "取消"))
- {
- scriptObjectSaveData.dic[sceneNmae + gameObject.name] = new List(_list);
- }
- else
- {
- return false;
- }
-
+ scriptObjectSaveData.dic[sceneNmae + gameObject.name] = new List(_list);
}
else
{
- // 如果不存在,添加新的键值对
- scriptObjectSaveData.dic.Add(sceneNmae + gameObject.name, new List(_list));
+ return false;
}
- AssetDatabase.SaveAssets();
- AssetDatabase.Refresh();
}
else
{
- Debug.LogError("ScriptObjectSaveData配置文件丢失");
- return false;
+ // 如果不存在,添加新的键值对
+ scriptObjectSaveData.dic.Add(sceneNmae + gameObject.name, new List(_list));
}
+ AssetDatabase.SaveAssets();
+ AssetDatabase.Refresh();
return true;
}
@@ -126,10 +125,35 @@ namespace Stary.Evo.InformationSave
return false;
}
+ private ScriptObjectSave CheckAndCreateFoldersAndAsset()
+ {
+ string ResourcesFolderName = "Resources";
+ string InformationSaveDataFolderName = "InformationSaveData";
+ string ScriptObjectSaveDataFileName = "ScriptObjectSaveData";
+ ScriptObjectSave scriptableObject;
- //private int guidIndex;
+ // 判断是否创建Resources文件夹
+ string resourcesPath = Path.Combine(Application.dataPath, ResourcesFolderName);
+ if (!Directory.Exists(resourcesPath))
+ {
+ Directory.CreateDirectory(resourcesPath);
+ }
- //private List strings = new List();
+ // 判断是否创建InformationSaveData文件夹
+ string informationSaveDataPath = Path.Combine(resourcesPath, InformationSaveDataFolderName);
+ if (!Directory.Exists(informationSaveDataPath))
+ {
+ Directory.CreateDirectory(informationSaveDataPath);
+ }
+
+ // 创建ScriptObjectSaveData.asset文件
+ scriptableObject = ScriptableObject.CreateInstance();
+ AssetDatabase.CreateAsset(scriptableObject, "Assets/" + ResourcesFolderName + "/" + InformationSaveDataFolderName + "/" + ScriptObjectSaveDataFileName + ".asset");
+ AssetDatabase.SaveAssets();
+ AssetDatabase.Refresh();
+
+ return scriptableObject;
+ }
//绘制
public override void Draw()