异步加载已修复, Config更新正推动

This commit is contained in:
2025-12-18 15:11:33 +08:00
parent 1436080fd6
commit ab60b35be2
20 changed files with 190 additions and 132 deletions

View File

@@ -7,6 +7,7 @@ using Dreamteck.Splines;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using UnityEngine;
@@ -32,26 +33,33 @@ namespace Demo
SharedModule.instance.OpenCustomMenu(item, result.ToArray());
}
static DefaultInstantiate()
{
s_ScriptableObjectInstantiate = new();
ScriptableObjectTypename2ID = new();
ScriptableObjectID2Typename = new();
int cnt = 0;
foreach (var type in Utility.SeekType(x => x.IsSubclassOf(typeof(ScriptableObject)) && x.GetCustomAttribute<Attr.ScriptableAttribute>() != null))
{
var attr = type.GetCustomAttribute<Attr.ScriptableAttribute>();
s_ScriptableObjectInstantiate.Add(type.Name, () => (ScriptableObject)ConventionUtility.InvokeMember(type.GetMethod(attr.generaterName), null));
}
var typelist = s_ScriptableObjectInstantiate.Keys.ToList();
typelist.Sort();
foreach (var type in typelist)
{
ScriptableObjectTypename2ID.Add(type, cnt);
ScriptableObjectID2Typename.Add(cnt, type);
cnt++;
}
}
private static Dictionary<string, Func<ScriptableObject>> s_ScriptableObjectInstantiate;
public readonly static Dictionary<string, int> ScriptableObjectTypename2ID;
public readonly static Dictionary<int, string> ScriptableObjectID2Typename;
public static Dictionary<string, Func<ScriptableObject>> GetScriptableObjectInstantiate()
{
//return s_ScriptableObjectInstantiate ??= new Dictionary<string, Func<ScriptableObject>>(GameObjectInstantiate
// .Union(DDTInstantiate)
// .Union(TickUpdatementInstantiate)
// .Union(MaterialUpdatementInstantiate)
// .Union(SplineInstantiate)
// .Union(JudgementInstantiate)
// .Union(SingleVolumeInstantiate));
if (s_ScriptableObjectInstantiate == null)
{
s_ScriptableObjectInstantiate = new();
foreach (var type in Utility.SeekType(x => x.IsSubclassOf(typeof(ScriptableObject)) && x.GetCustomAttribute<Attr.ScriptableAttribute>() != null))
{
var attr = type.GetCustomAttribute<Attr.ScriptableAttribute>();
s_ScriptableObjectInstantiate.Add(type.Name, () => (ScriptableObject)ConventionUtility.InvokeMember(type.GetMethod(attr.generaterName), null));
}
}
return s_ScriptableObjectInstantiate;
}
}