using System.Collections; using System.Collections.Generic; using Convention; using UnityEngine; using System; namespace Demo.Game { public class DDT : ScriptableObject, IEnumerable { protected override bool IsSelfEnableUpdate => false; public static DDT Make() { return new GameObject().AddComponent(); } public List Datas = new(); [Convention.RScript.Variable.Attr.Method] public void Add(float value) { Datas.Add(value); } [Convention.RScript.Variable.Attr.Method] public void Add(int barSplitTimes, int barCount, int tickCount) { Datas.Add((barCount + tickCount / (float)barSplitTimes) * OneBarTime); } [Convention.RScript.Variable.Attr.Method] public float At(int index) { if (index < 0) index = Datas.Count + index; if (index < 0 || index >= Datas.Count) throw new IndexOutOfRangeException($"{index} is out of [0, {Datas.Count})"); return Datas[index]; } /// /// 获取数据长度 /// /// [Convention.RScript.Variable.Attr.Method] public int GetCount() { return Datas.Count; } public IEnumerator GetEnumerator() { return ((IEnumerable)Datas).GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return ((IEnumerable)Datas).GetEnumerator(); } public int Count => Datas.Count; } }