自动化生成字典
This commit is contained in:
@@ -7,8 +7,7 @@ using Dreamteck.Splines;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Demo
|
||||
@@ -17,68 +16,6 @@ namespace Demo
|
||||
{
|
||||
public static class DefaultInstantiate
|
||||
{
|
||||
public static Dictionary<string, Func<ScriptableObject>> GameObjectInstantiate = new()
|
||||
{
|
||||
{ $"{nameof(Anchor)}",Anchor.Make},
|
||||
// Camera
|
||||
{ $"{nameof(CameraObject)}",CameraObject.MakeCameraObject},
|
||||
// Global Env
|
||||
{ $"{nameof(PrefabRootObject)}",PrefabRootObject.Make },
|
||||
{ $"{nameof(SkyUpdatement)}",SkyUpdatement.Make},
|
||||
// Sub World
|
||||
{ $"{nameof(SubWorld)}",SubWorld.Make},
|
||||
};
|
||||
|
||||
public static Dictionary<string, Func<ScriptableObject>> DDTInstantiate = new()
|
||||
{
|
||||
{ $"{nameof(DDT)}",DDT.Make}
|
||||
};
|
||||
|
||||
public static Dictionary<string, Func<ScriptableObject>> TickUpdatementInstantiate = new()
|
||||
{
|
||||
{ $"{nameof(LookAtAnchor)}",LookAtAnchor.Make},
|
||||
{ $"{nameof(TickMovement)}",TickMovement.Make},
|
||||
{ $"{nameof(TickRotation)}",TickRotation.Make},
|
||||
{ $"{nameof(TickScaling)}",TickScaling.Make},
|
||||
};
|
||||
|
||||
public static Dictionary<string, Func<ScriptableObject>> MaterialUpdatementInstantiate = new()
|
||||
{
|
||||
{ $"{nameof(MaterialUpdatement)}",MaterialUpdatement.Make},
|
||||
{ $"{nameof(ColorUpdatement)}",ColorUpdatement.Make},
|
||||
{ $"{nameof(EmissionColorUpdatement)}",EmissionColorUpdatement.Make},
|
||||
};
|
||||
|
||||
public static Dictionary<string, Func<ScriptableObject>> SplineInstantiate = new()
|
||||
{
|
||||
{ $"{nameof(SplineCore)}",SplineCore.Make},
|
||||
{ $"{nameof(SplineNode)}",SplineNode.Make},
|
||||
{ $"{nameof(SplineAnchor)}",SplineAnchor.Make},
|
||||
{ $"{nameof(SplineMovement)}",SplineMovement.Make},
|
||||
{ $"{nameof(SplineRotation)}",SplineRotation.Make},
|
||||
{ $"{nameof(SplineScaling)}",SplineScaling.Make},
|
||||
{ $"{nameof(SplinePointerObject)}",SplinePointerObject.Make},
|
||||
{ $"{nameof(SplineTrackRenderer)}",SplineTrackRenderer.Make},
|
||||
{ $"{nameof(SplineTubeRenderer)}",SplineTubeRenderer.Make},
|
||||
{ $"{nameof(SplineSurfaceRenderer)}",SplineSurfaceRenderer.Make},
|
||||
{ $"{nameof(SplineRenderer)}",SplineRenderer.Make},
|
||||
};
|
||||
|
||||
public static Dictionary<string, Func<ScriptableObject>> JudgementInstantiate = new()
|
||||
{
|
||||
// 可判定物只能有一个种类被使用,否则会引起输入检定冲突
|
||||
{ $"{nameof(FullScreenInteraction)}",FullScreenInteraction.Make},
|
||||
// Effect
|
||||
{ $"{nameof(ParticleEffect)}",ParticleEffect.Make },
|
||||
// JudgementEffect
|
||||
{ $"{nameof(ParticleJudgement)}",ParticleJudgement.Make},
|
||||
};
|
||||
|
||||
public static Dictionary<string, Func<ScriptableObject>> SingleVolumeInstantiate = new()
|
||||
{
|
||||
{ $"{nameof(MotionBlurVolume)}", MotionBlurVolume.Make }
|
||||
};
|
||||
|
||||
public static void OpenInstantiateMenu(this ScriptableObject self, RectTransform item)
|
||||
{
|
||||
List<SharedModule.CallbackData> result = new()
|
||||
@@ -99,13 +36,23 @@ namespace Demo
|
||||
|
||||
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));
|
||||
//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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user