完成Config初步

This commit is contained in:
2025-12-17 15:50:03 +08:00
parent 60df9a93aa
commit 5a02de8c9c
14 changed files with 105 additions and 36 deletions

View File

@@ -238,7 +238,7 @@ namespace Demo.Game
{
if (Parent == null)
rootObjectCache = this as RootObject;
if (Parent is RootObject result)
else if (Parent is RootObject result)
rootObjectCache = result;
else
rootObjectCache = Parent.GetRoot();

View File

@@ -1,6 +1,6 @@
using Convention;
using Demo.Game.Attr;
using NUnit.Framework.Internal;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.IO;
@@ -14,11 +14,20 @@ namespace Demo.Game
{
public bool IsZooming;
public MathExtension.EaseCurveType ZoomCurve = MathExtension.EaseCurveType.OutCubic;
public IInteraction.JudgementLevel[] LevelArray;
public string[] AssetBundles;
public string[] Prefabs;
public float[] Durations;
public override void Deserialize(BinaryReader reader)
{
IsZooming = BinarySerializeUtility.ReadBool(reader);
ZoomCurve = (MathExtension.EaseCurveType)BinarySerializeUtility.ReadInt(reader);
var temp = BinarySerializeUtility.DeserializeIntArray(reader);
LevelArray = (from item in temp select (IInteraction.JudgementLevel)item).ToArray();
AssetBundles = BinarySerializeUtility.DeserializeStringArray(reader);
Prefabs = BinarySerializeUtility.DeserializeStringArray(reader);
Durations = BinarySerializeUtility.DeserializeFloatArray(reader);
base.Deserialize(reader);
}
@@ -26,6 +35,10 @@ namespace Demo.Game
{
BinarySerializeUtility.WriteBool(writer, IsZooming);
BinarySerializeUtility.WriteInt(writer, (int)ZoomCurve);
BinarySerializeUtility.SerializeArray(writer, (from item in LevelArray select (int)item).ToArray());
BinarySerializeUtility.SerializeArray(writer, AssetBundles);
BinarySerializeUtility.SerializeArray(writer, Prefabs);
BinarySerializeUtility.SerializeArray(writer, Durations);
base.Serialize(writer);
}
}

View File

@@ -44,7 +44,7 @@ namespace Demo.Game
[Convention.RScript.Variable.Attr.Method]
public void Add(float time, ScriptableObject target)
{
ManualAddEntry(time, LookAtCache.Count - 1, default);
ManualAddEntry(time, GetRoot().FindIndex(target), default);
}
/// <summary>

View File

@@ -1,10 +1,31 @@
using System.Collections;
using System.Collections.Generic;
using System.IO;
using Convention;
using UnityEngine;
namespace Demo.Game
{
namespace ConfigType
{
public class BaseOnMaterialUpdatementConfig : UpdatementFloatConfig
{
public int TargetMeshRenderer;
public override void Deserialize(BinaryReader reader)
{
TargetMeshRenderer = BinarySerializeUtility.ReadInt(reader);
base.Deserialize(reader);
}
public override void Serialize(BinaryWriter writer)
{
BinarySerializeUtility.WriteInt(writer, TargetMeshRenderer);
base.Serialize(writer);
}
}
}
public abstract class BaseOnMaterialUpdatement : Updatement<float>
{
public abstract string TargetFieldName { get; }
@@ -27,13 +48,9 @@ namespace Demo.Game
/// </summary>
/// <param name="path">脚本位置</param>
[Convention.RScript.Variable.Attr.Method]
public void Load(string path)
public void Load(ScriptableObject obj)
{
var so = FindWithPath(path, false);
if (so != null)
{
TargetMeshRenderer = so.GetComponent<MeshRenderer>();
}
TargetMeshRenderer = obj.GetComponent<MeshRenderer>();
}
}
}

View File

@@ -1,11 +1,13 @@
using System.Collections;
using System.Collections.Generic;
using Convention;
using Demo.Game.Attr;
using Unity.VisualScripting;
using UnityEngine;
namespace Demo.Game
{
[Scriptable]
public class ColorUpdatement : BaseOnMaterialUpdatement
{
public static ColorUpdatement Make()

View File

@@ -1,11 +1,13 @@
using System.Collections;
using System.Collections.Generic;
using Convention;
using Demo.Game.Attr;
using Unity.VisualScripting;
using UnityEngine;
namespace Demo.Game
{
[Scriptable]
public class EmissionColorUpdatement : BaseOnMaterialUpdatement
{
public static EmissionColorUpdatement Make()

View File

@@ -36,6 +36,16 @@ namespace Demo.Game
public abstract class BasicSplineRenderer : Updatement<SplineClipDuration>, IAssetBundleLoader, IDependOnSplineCore
{
/// <summary>
/// 加载并绑定到新样条线
/// </summary>
/// <param name="path">对象路径, 不存在时则立刻加载</param>
[Convention.RScript.Variable.Attr.Method]
public void LoadSpline(SplineCore core)
{
MySplineCore = core;
}
[Content] public SplineCore MySplineCore { get; set; }
[Content] private MeshFilter m_MeshFilter;
[Content] private MeshRenderer m_MyMeshRenderer;

View File

@@ -38,6 +38,15 @@ namespace Demo.Game
[Scriptable]
public class SplineAnchor : ScriptableObject, IDependOnSplineCore
{
/// <summary>
/// 加载并绑定到新样条线
/// </summary>
/// <param name="path">对象路径, 不存在时则立刻加载</param>
[Convention.RScript.Variable.Attr.Method]
public void LoadSpline(SplineCore core)
{
MySplineCore = core;
}
public static SplineAnchor Make()
{
return new GameObject().AddComponent<SplineAnchor>();

View File

@@ -51,15 +51,7 @@ namespace Demo.Game
public interface IDependOnSplineCore : IScriptableObject
{
SplineCore MySplineCore { get; set; }
/// <summary>
/// 加载并绑定到新样条线
/// </summary>
/// <param name="path">对象路径, 不存在时则立刻加载</param>
[Convention.RScript.Variable.Attr.Method]
void LoadSpline(SplineCore core)
{
MySplineCore = core;
}
void LoadSpline(SplineCore core);
}
[Scriptable]

View File

@@ -27,6 +27,15 @@ namespace Demo.Game
public abstract class BasicSplineJustFollow : Updatement<float>, IDependOnSplineCore
{
/// <summary>
/// 加载并绑定到新样条线
/// </summary>
/// <param name="path">对象路径, 不存在时则立刻加载</param>
[Convention.RScript.Variable.Attr.Method]
public void LoadSpline(SplineCore core)
{
MySplineCore = core;
}
public SplineCore MySplineCore { get; set; }
protected override float Lerp(float begin, float end, float t)

View File

@@ -9,23 +9,6 @@ using UnityEngine.Rendering.Universal;
namespace Demo.Game
{
namespace ConfigType
{
// BaseVolume 配置抽象基类Config
public class BaseVolumeConfig : ScriptLoadableConfig
{
public override void Deserialize(BinaryReader reader)
{
base.Deserialize(reader);
}
public override void Serialize(BinaryWriter writer)
{
base.Serialize(writer);
}
}
}
public abstract class BaseVolume : ScriptableObject
{
[Resources, SerializeField] private Volume m_volume;

View File

@@ -4,6 +4,11 @@ using UnityEngine.Rendering.Universal;
namespace Demo.Game
{
namespace ConfigType
{
}
[Scriptable]
public class MotionBlurVolume : BaseForSingleVolume<MotionBlur>
{

View File

@@ -1,10 +1,37 @@
using Convention;
using Demo.Game.Attr;
using System.Collections;
using System.IO;
using UnityEngine;
namespace Demo.Game
{
namespace ConfigType
{
public class BaseVolumeUpdatementConfig:ScriptLoadableConfig
{
public int target;
public string updateOverride;
public string updateField;
public override void Deserialize(BinaryReader reader)
{
target = BinarySerializeUtility.ReadInt(reader);
updateOverride = BinarySerializeUtility.ReadString(reader);
updateField = BinarySerializeUtility.ReadString(reader);
base.Deserialize(reader);
}
public override void Serialize(BinaryWriter writer)
{
BinarySerializeUtility.WriteInt(writer, target);
BinarySerializeUtility.WriteString(writer, updateOverride);
BinarySerializeUtility.WriteString(writer, updateField);
base.Serialize(writer);
}
}
}
public abstract class BaseVolumeUpdatement<T> : Updatement<T> where T : unmanaged
{
[Content, SerializeField] private BaseVolume target;

View File

@@ -10,7 +10,7 @@ namespace Demo.Game
namespace ConfigType
{
// VolumeObject 配置
public class VolumeObjectConfig : BaseVolumeConfig
public class VolumeObjectConfig : ScriptLoadableConfig
{
public string MyAssetBundle, MyProfile;