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; } protected override float Lerp(float begin, float end, float t) { return Mathf.Lerp(begin, end, t); } [Content] public MeshRenderer TargetMeshRenderer; protected override void UpdateData(float data) { if (TargetMeshRenderer != null) TargetMeshRenderer.material.SetFloat(TargetFieldName, data); } /// /// 绑定到允许的渲染器 /// /// 脚本位置 [Convention.RScript.Variable.Attr.Method] public void Load(ScriptableObject obj) { TargetMeshRenderer = obj.GetComponent(); } } }