diff --git a/Assets/Scripts/Framework/ScriptableObject.cs b/Assets/Scripts/Framework/ScriptableObject.cs
index 0d9c589..fe84d1f 100644
--- a/Assets/Scripts/Framework/ScriptableObject.cs
+++ b/Assets/Scripts/Framework/ScriptableObject.cs
@@ -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();
diff --git a/Assets/Scripts/Interaction/JudgementEffect/ParticleJudgement.cs b/Assets/Scripts/Interaction/JudgementEffect/ParticleJudgement.cs
index a7b85a4..87c59cd 100644
--- a/Assets/Scripts/Interaction/JudgementEffect/ParticleJudgement.cs
+++ b/Assets/Scripts/Interaction/JudgementEffect/ParticleJudgement.cs
@@ -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);
}
}
diff --git a/Assets/Scripts/LookAtAnchor.cs b/Assets/Scripts/LookAtAnchor.cs
index 7bae042..ae3539c 100644
--- a/Assets/Scripts/LookAtAnchor.cs
+++ b/Assets/Scripts/LookAtAnchor.cs
@@ -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);
}
///
diff --git a/Assets/Scripts/MoreMaterialUpdatement/BaseOnMaterialUpdatement.cs b/Assets/Scripts/MoreMaterialUpdatement/BaseOnMaterialUpdatement.cs
index b38353f..9e21cf8 100644
--- a/Assets/Scripts/MoreMaterialUpdatement/BaseOnMaterialUpdatement.cs
+++ b/Assets/Scripts/MoreMaterialUpdatement/BaseOnMaterialUpdatement.cs
@@ -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
{
public abstract string TargetFieldName { get; }
@@ -27,13 +48,9 @@ namespace Demo.Game
///
/// 脚本位置
[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();
- }
+ TargetMeshRenderer = obj.GetComponent();
}
}
}
diff --git a/Assets/Scripts/MoreMaterialUpdatement/ColorUpdatement.cs b/Assets/Scripts/MoreMaterialUpdatement/ColorUpdatement.cs
index bc8ba6d..2081401 100644
--- a/Assets/Scripts/MoreMaterialUpdatement/ColorUpdatement.cs
+++ b/Assets/Scripts/MoreMaterialUpdatement/ColorUpdatement.cs
@@ -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()
diff --git a/Assets/Scripts/MoreMaterialUpdatement/EmissionColorUpdatement.cs b/Assets/Scripts/MoreMaterialUpdatement/EmissionColorUpdatement.cs
index 3d2ed19..431cba4 100644
--- a/Assets/Scripts/MoreMaterialUpdatement/EmissionColorUpdatement.cs
+++ b/Assets/Scripts/MoreMaterialUpdatement/EmissionColorUpdatement.cs
@@ -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()
diff --git a/Assets/Scripts/MoreSpline/PointBaseRenderer/BasicSplineRenderer.cs b/Assets/Scripts/MoreSpline/PointBaseRenderer/BasicSplineRenderer.cs
index 8f2c5c8..b00223a 100644
--- a/Assets/Scripts/MoreSpline/PointBaseRenderer/BasicSplineRenderer.cs
+++ b/Assets/Scripts/MoreSpline/PointBaseRenderer/BasicSplineRenderer.cs
@@ -36,6 +36,16 @@ namespace Demo.Game
public abstract class BasicSplineRenderer : Updatement, IAssetBundleLoader, IDependOnSplineCore
{
+ ///
+ /// 加载并绑定到新样条线
+ ///
+ /// 对象路径, 不存在时则立刻加载
+ [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;
diff --git a/Assets/Scripts/MoreSpline/SplineAnchor.cs b/Assets/Scripts/MoreSpline/SplineAnchor.cs
index 385276d..ec3ba8f 100644
--- a/Assets/Scripts/MoreSpline/SplineAnchor.cs
+++ b/Assets/Scripts/MoreSpline/SplineAnchor.cs
@@ -38,6 +38,15 @@ namespace Demo.Game
[Scriptable]
public class SplineAnchor : ScriptableObject, IDependOnSplineCore
{
+ ///
+ /// 加载并绑定到新样条线
+ ///
+ /// 对象路径, 不存在时则立刻加载
+ [Convention.RScript.Variable.Attr.Method]
+ public void LoadSpline(SplineCore core)
+ {
+ MySplineCore = core;
+ }
public static SplineAnchor Make()
{
return new GameObject().AddComponent();
diff --git a/Assets/Scripts/MoreSpline/SplineCore.cs b/Assets/Scripts/MoreSpline/SplineCore.cs
index 9b7efc7..0eca3de 100644
--- a/Assets/Scripts/MoreSpline/SplineCore.cs
+++ b/Assets/Scripts/MoreSpline/SplineCore.cs
@@ -51,15 +51,7 @@ namespace Demo.Game
public interface IDependOnSplineCore : IScriptableObject
{
SplineCore MySplineCore { get; set; }
- ///
- /// 加载并绑定到新样条线
- ///
- /// 对象路径, 不存在时则立刻加载
- [Convention.RScript.Variable.Attr.Method]
- void LoadSpline(SplineCore core)
- {
- MySplineCore = core;
- }
+ void LoadSpline(SplineCore core);
}
[Scriptable]
diff --git a/Assets/Scripts/MoreSpline/Updatement/BasicSplineJustFollow.cs b/Assets/Scripts/MoreSpline/Updatement/BasicSplineJustFollow.cs
index 10dbdcd..99e4ccb 100644
--- a/Assets/Scripts/MoreSpline/Updatement/BasicSplineJustFollow.cs
+++ b/Assets/Scripts/MoreSpline/Updatement/BasicSplineJustFollow.cs
@@ -27,6 +27,15 @@ namespace Demo.Game
public abstract class BasicSplineJustFollow : Updatement, IDependOnSplineCore
{
+ ///
+ /// 加载并绑定到新样条线
+ ///
+ /// 对象路径, 不存在时则立刻加载
+ [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)
diff --git a/Assets/Scripts/Volume/BaseVolume.cs b/Assets/Scripts/Volume/BaseVolume.cs
index 344acee..148fcc9 100644
--- a/Assets/Scripts/Volume/BaseVolume.cs
+++ b/Assets/Scripts/Volume/BaseVolume.cs
@@ -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;
diff --git a/Assets/Scripts/Volume/MotionBlurVolume.cs b/Assets/Scripts/Volume/MotionBlurVolume.cs
index 12c0697..bd6089f 100644
--- a/Assets/Scripts/Volume/MotionBlurVolume.cs
+++ b/Assets/Scripts/Volume/MotionBlurVolume.cs
@@ -4,6 +4,11 @@ using UnityEngine.Rendering.Universal;
namespace Demo.Game
{
+ namespace ConfigType
+ {
+
+ }
+
[Scriptable]
public class MotionBlurVolume : BaseForSingleVolume
{
diff --git a/Assets/Scripts/Volume/Updatement/BaseVolumeUpdatement.cs b/Assets/Scripts/Volume/Updatement/BaseVolumeUpdatement.cs
index b1bb0ec..da6ceb1 100644
--- a/Assets/Scripts/Volume/Updatement/BaseVolumeUpdatement.cs
+++ b/Assets/Scripts/Volume/Updatement/BaseVolumeUpdatement.cs
@@ -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 : Updatement where T : unmanaged
{
[Content, SerializeField] private BaseVolume target;
diff --git a/Assets/Scripts/Volume/VolumeObject.cs b/Assets/Scripts/Volume/VolumeObject.cs
index 1dcd4ca..b8afbd5 100644
--- a/Assets/Scripts/Volume/VolumeObject.cs
+++ b/Assets/Scripts/Volume/VolumeObject.cs
@@ -10,7 +10,7 @@ namespace Demo.Game
namespace ConfigType
{
// VolumeObject 配置
- public class VolumeObjectConfig : BaseVolumeConfig
+ public class VolumeObjectConfig : ScriptLoadableConfig
{
public string MyAssetBundle, MyProfile;