/* * @Author: 白哉 * @Description: * @Date: 2025年07月01日 星期二 11:07:48 * @Modify: */ using System.Collections.Generic; using UnityEngine; namespace Logic.Timeline { public class TimelineManager { public static TimelineManager Instance = new TimelineManager(); private TimelineManager() { } public List Fragment => _fragments; private List _fragments =new List(); public void AddFragment(FragmentBase fragment) { _fragments.Add(fragment); Update(); } public void Update() { foreach (var fragment in _fragments) { if (fragment.State == FragmentState.Prepare) { fragment.OnStart(); fragment.StartTime = Time.time; fragment.State = FragmentState.Playing; } if (fragment.State == FragmentState.Playing) { fragment.OnUpdate(Time.time - fragment.StartTime); if (Time.time >= fragment.StartTime + fragment.Duration) { fragment.OnFinished(); fragment.State = FragmentState.Finished; } } } for (int i = _fragments.Count - 1; i >= 0; i--) { if (_fragments[i].State != FragmentState.Finished) continue; _fragments.RemoveAt(i); } } } }