using System.Collections; using System.Collections.Generic; using UnityEngine; namespace HeavenStudio.Util { public class BeatAction : MonoBehaviour { private int index; private List actions = new List(); public delegate void EventCallback(); public class Action { public float beat { get; set; } public EventCallback function { get; set; } public Action(float beat, EventCallback function) { this.beat = beat; this.function = function; } } public static void New(GameObject prefab, List actions) { BeatAction beatAction = prefab.AddComponent(); beatAction.actions = actions; } private void Update() { float songPositionInBeats = Conductor.instance.songPositionInBeats; for (int i = 0; i < actions.Count; i++) { if (songPositionInBeats >= actions[i].beat && index == i) { actions[i].function.Invoke(); index++; } } } } }