完成Config初步
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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>();
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -4,6 +4,11 @@ using UnityEngine.Rendering.Universal;
|
||||
|
||||
namespace Demo.Game
|
||||
{
|
||||
namespace ConfigType
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
[Scriptable]
|
||||
public class MotionBlurVolume : BaseForSingleVolume<MotionBlur>
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace Demo.Game
|
||||
namespace ConfigType
|
||||
{
|
||||
// VolumeObject 配置
|
||||
public class VolumeObjectConfig : BaseVolumeConfig
|
||||
public class VolumeObjectConfig : ScriptLoadableConfig
|
||||
{
|
||||
public string MyAssetBundle, MyProfile;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user