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;