Timelineの再生

using UniRx;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;
using static Util;
 
/// <summary>
/// タイムライン再生を管理
/// </summary>
[RequireComponent(typeof(PlayableDirector))]
public class HogeDirector : MonoBehaviour {
    /// <summary>
    /// タイムライン
    /// </summary>
    [SerializeField]
    private TimelineAsset[] timelines;
 
    /// <summary>
    /// Playable Director
    /// </summary>
    private PlayableDirector director;
    
    public Subject<HogeEvent> hogeEventStream = new Subject<HogeEvent>();
    
    void Start() {
        director = GetComponent<PlayableDirector>();
        
        // Event を受け取ったら Timelineを再生
        hogeEventStream
            .Subscribe(PlayTimeline)
            .AddTo(this);
    }
 
    void PlayTimeline(HogeEvent e) {
        director.stopped += _ => {};
        director.Play(timelines[e.index]);
    }
}