using System; using System.Collections; using System.Collections.Generic; using System.Linq; using Ichni.Editor; using Ichni.RhythmGame.Beatmap; using Sirenix.OdinInspector; using UniRx; using UnityEngine; namespace Ichni.RhythmGame { public interface IBaseElement { public BaseElement_BM matchedBM { get; set; } /// /// 用于生成存档 /// public void SaveBM() { } /// /// 刷新物体的状态 /// public void Refresh() { } /// /// 当物体被删除时执行的方法 /// public void OnDelete() { throw new NotImplementedException(); } /// /// 删除物体,包括所有子物体 /// public void Delete() { throw new NotImplementedException(); } public void SetUpInspector() { } } public interface IHaveInteraction { public void TriggerInteraction(); } namespace Beatmap { public abstract class BaseElement_BM { public Guid attachedElementGuid; /// /// 从存档类中生成游戏物体 /// public abstract void ExecuteBM(); /// /// 在AfterInitialize中被调用,用于处理GameElement的“需要引用”的物体在此物体后面生成的情况。 /// 注意,如果使用此函数,需要在ExecuteBM中设置 matchedElement.matchedBM = this; /// public virtual void AfterExecute() { } } } }