InformationSave_UseResources_Over

This commit is contained in:
Han
2025-03-27 16:56:33 +08:00
parent 4f6edd606d
commit 0f88c0296f

View File

@@ -17,7 +17,7 @@ namespace Stary.Evo.InformationSave
/// <summary> /// <summary>
/// 配置文件存储路径 /// 配置文件存储路径
/// </summary> /// </summary>
string path = "Assets/02.InformationSave/RunTime/Data/ScriptObjectSaveData.asset"; string path = "InformationSaveData/ScriptObjectSaveData";
public virtual void Add() public virtual void Add()
{ {
@@ -51,6 +51,7 @@ namespace Stary.Evo.InformationSave
int index = _list.FindIndex(n => n.desc == desc); int index = _list.FindIndex(n => n.desc == desc);
if (index != -1) Switch(index); if (index != -1) Switch(index);
} }
#region Editor #region Editor
#if UNITY_EDITOR #if UNITY_EDITOR
@@ -58,8 +59,8 @@ namespace Stary.Evo.InformationSave
public void UpdateInformation() public void UpdateInformation()
{ {
String sceneNmae = gameObject.scene.name; String sceneNmae = gameObject.scene.name;
ScriptObjectSave scriptObjectSaveData = AssetDatabase.LoadAssetAtPath<ScriptObjectSave>(path); ScriptObjectSave scriptObjectSaveData = Resources.Load<ScriptObjectSave>(path);
if(scriptObjectSaveData == null) if (scriptObjectSaveData == null)
{ {
Debug.LogError("ScriptObjectSaveData配置文件丢失"); Debug.LogError("ScriptObjectSaveData配置文件丢失");
return; return;
@@ -84,41 +85,39 @@ namespace Stary.Evo.InformationSave
{ {
String sceneNmae = gameObject.scene.name; String sceneNmae = gameObject.scene.name;
// 加载 ScriptObjectSaveData // 加载 ScriptObjectSaveData
ScriptObjectSave scriptObjectSaveData = AssetDatabase.LoadAssetAtPath<ScriptObjectSave>(path); ScriptObjectSave scriptObjectSaveData = Resources.Load<ScriptObjectSave>(path);
if(scriptObjectSaveData != null) 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为空"); scriptObjectSaveData.dic[sceneNmae + gameObject.name] = new List<InformationBase>(_list);
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<InformationBase>(_list);
}
else
{
return false;
}
} }
else else
{ {
// 如果不存在,添加新的键值对 return false;
scriptObjectSaveData.dic.Add(sceneNmae + gameObject.name, new List<InformationBase>(_list));
} }
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
} }
else else
{ {
Debug.LogError("ScriptObjectSaveData配置文件丢失"); // 如果不存在,添加新的键值对
return false; scriptObjectSaveData.dic.Add(sceneNmae + gameObject.name, new List<InformationBase>(_list));
} }
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
return true; return true;
} }
@@ -126,10 +125,35 @@ namespace Stary.Evo.InformationSave
return false; 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<string> strings = new List<string>(); // 判断是否创建InformationSaveData文件夹
string informationSaveDataPath = Path.Combine(resourcesPath, InformationSaveDataFolderName);
if (!Directory.Exists(informationSaveDataPath))
{
Directory.CreateDirectory(informationSaveDataPath);
}
// 创建ScriptObjectSaveData.asset文件
scriptableObject = ScriptableObject.CreateInstance<ScriptObjectSave>();
AssetDatabase.CreateAsset(scriptableObject, "Assets/" + ResourcesFolderName + "/" + InformationSaveDataFolderName + "/" + ScriptObjectSaveDataFileName + ".asset");
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
return scriptableObject;
}
//绘制 //绘制
public override void Draw() public override void Draw()