using System.Collections.Generic; using Mono.Event; using Sirenix.OdinInspector; using Sirenix.Serialization; using UnityEngine; using UnityEngine.Playables; namespace UnityTest.ZXL { public class TimelineManager : MonoBehaviour { [SerializeField] private List _playableDirectors = new List(); private void Awake() { foreach (var playableDirector in _playableDirectors) { playableDirector.stopped += FirePlayableStopped; } } /// /// timeline播放结束触发的事件 /// /// private void FirePlayableStopped(PlayableDirector obj) { Debug.Log($"timeline {obj.name} is stop"); EventManager.Instance.FireNow(this, new PlayableStoppedEventArgs(obj)); } #if UNITY_EDITOR [Button] void Add() { var go = GameObject.Find("Timeline_M"); var list = go.GetComponentAllChild(); _playableDirectors = new List(list); } #endif } }