Merge branch 'temp827'
This commit is contained in:
@ -67,17 +67,73 @@ namespace Managers
|
||||
if (packs.Count > 0)
|
||||
return;
|
||||
|
||||
// 获取所有定义包的文件夹路径
|
||||
// // 获取所有定义包的文件夹路径
|
||||
// var packFolder = Configs.ConfigProcessor.GetSubFolders(new(dataSetFilePath));
|
||||
// foreach (var folder in packFolder)
|
||||
// {
|
||||
// var pack = new DefinePack();
|
||||
// if (pack.LoadPack(folder))
|
||||
// {
|
||||
// packs.Add(pack.packID, pack);
|
||||
// }
|
||||
// }
|
||||
var packFolder = Configs.ConfigProcessor.GetSubFolders(new(dataSetFilePath));
|
||||
|
||||
// 获取当前的加载顺序
|
||||
var currentOrder = Base.Setting.Instance.CurrentSettings.loadOrder; // 假设为 string[]
|
||||
var isFirstLaunch = currentOrder == null || currentOrder.Length == 0;
|
||||
|
||||
var newOrder = new List<string>(); // 用于最终写回
|
||||
|
||||
foreach (var folder in packFolder)
|
||||
{
|
||||
var pack = new DefinePack();
|
||||
if (pack.LoadPack(folder))
|
||||
{
|
||||
// 根据加载顺序设置 priority
|
||||
int priority;
|
||||
|
||||
if (isFirstLaunch)
|
||||
{
|
||||
// 第一次启动,按遍历顺序设置 priority
|
||||
// 暂时使用新增时的顺序作为 priority,顺序从 newOrder 的索引确定
|
||||
priority = newOrder.Count;
|
||||
// 记录该 pack 的 ID,后续写回 loadOrder
|
||||
newOrder.Add(pack.packID);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 非首次启动,使用现有 loadOrder 中的位置来设置 priority
|
||||
var idx = Array.IndexOf(currentOrder, pack.packID);
|
||||
if (idx >= 0)
|
||||
{
|
||||
priority = idx;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 未出现在现有顺序中,放在末尾
|
||||
priority = currentOrder.Length;
|
||||
// 可选:也将其加入 newOrder 以更新 loadOrder
|
||||
}
|
||||
}
|
||||
|
||||
pack.priority = priority;
|
||||
packs.Add(pack.packID, pack);
|
||||
}
|
||||
}
|
||||
|
||||
// 如果是第一次启动,写回 loadOrder(顺序为 newOrder)
|
||||
if (isFirstLaunch)
|
||||
{
|
||||
// 将 newOrder 转换为 string[],并写回设置
|
||||
Base.Setting.Instance.CurrentSettings.loadOrder = new string[newOrder.Count];
|
||||
newOrder.CopyTo(Base.Setting.Instance.CurrentSettings.loadOrder);
|
||||
// 可能需要保存设置到磁盘/持久化
|
||||
// Example: Settings.Save(Base.Setting.Instance.CurrentSettings);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 字段信息缓存,用于优化反射性能。
|
||||
Dictionary<Type, FieldInfo[]> fieldCache = new();
|
||||
|
||||
@ -130,6 +186,7 @@ namespace Managers
|
||||
anonymousDefines.Add(typeName, new List<Define>());
|
||||
anonymousDefines[typeName].Add(defRef);
|
||||
}
|
||||
|
||||
ProcessDefine(defRef);
|
||||
}
|
||||
}
|
||||
@ -208,7 +265,8 @@ namespace Managers
|
||||
var value = FindDefine(defRef.Item3.description, defRef.Item3.defName);
|
||||
if (value == null)
|
||||
{
|
||||
Debug.LogError($"未找到引用,出错的定义:定义类型:{defRef.Item1.GetType().Name}, 定义名:{defRef.Item1.defName} ; 类型:{defRef.Item3.description}, 定义名:{defRef.Item3.defName}");
|
||||
Debug.LogError(
|
||||
$"未找到引用,出错的定义:定义类型:{defRef.Item1.GetType().Name}, 定义名:{defRef.Item1.defName} ; 类型:{defRef.Item3.description}, 定义名:{defRef.Item3.defName}");
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -352,7 +410,6 @@ namespace Managers
|
||||
// 如果结果为空,则返回 null。
|
||||
if (result.Count == 0)
|
||||
{
|
||||
Debug.LogWarning($"查询失败:未找到定义类型 '{defineType}'");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user