//创建Timeline导演
PlayableDirector playableDirector;
//Timeline资产
TimelineAsset timelineAsset;
//获取物体身上的导演
playableDirector=GetComponent<PlayableDirector>()
//创建Timeline资产
timelineAsset=ScriptableObject.CreateInstance<TimelineAsset>();
playableDirector.playableAsset=timelineAsset;
playableDirector.playOnAwake = false;
//动态创建动画轨道
//定义动画
public AnimationClip animation;
//定义人物身上的动画骨骼
public Animator playerani;
//创建动画轨道并绑定人物
AnimationTrack ani= timelineAsset.CreateTrack<AnimationTrack>();
playableDirector.SetGenericBinding(ani, playerani);
//创建动画轨道上的动画资产
TimelineClip timelineClip = ani.CreateClip<AnimationPlayableAsset>();
//转型为动画资产
AnimationPlayableAsset animAsset= timelineClip.asset as AnimationPlayableAsset;
//循环播放
animAsset.loop = AnimationPlayableAsset.LoopMode.On;
//赋值
animAsset.clip = animation;
//设定时间
timelineClip.start = 0;
timelineClip.duration = 10;
//创建control轨道
publicGameObject talk
//control轨道
ControlTrack controlTrack =timelineAsset.CreateTrack<ControlTrack>();
TimelineClip timelineClip =controlTrack.CreateClip<ControlPlayableAsset>();
timelineClip.sourceGameObject.exposedName="Talk";//改变轨道名字
timelineClip.sourceGameObject.defaultValue=talk;//给轨道赋值
timelineClip.start=2;//开始时间
timelineClip.duration=2;//持续时间
//创建信号量轨道
//创建信号量轨道
SignalTrack signalTrack =timelineAsset.CreateTrack<SignalTrack>();
SignalReceiver signalReceiver =gameObject.AddComponent<SignalReceiver>();
//绑定轨道
playableDirector.SetGenericBinding(signalTrack,gameObject);
//创建信号量
SignalAsset signalAsset =new SignalAsset();
signalAsset =" ";
触发时间
SignalEmitter signalEmitter=signalTrack .CreateMarker<SignalEmitter>(2);
signalEmitter.asset=signalAsset;
//绑定事件
signalReceiver.AddReaction(signalEmitter.asset,new UnityEngine.Events.UnityEvent());
signalReceiver.GetReaction(signalAsset).AddListener(()=>
{
//想要运行的东西
})