TH1/Unity/Assets/Scripts/Logic/Timeline/TimelineManager.cs
2025-07-25 22:57:26 +08:00

58 lines
1.5 KiB
C#

/*
* @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() { }
private List<FragmentBase> _fragments =new List<FragmentBase>();
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);
}
}
}
}