关联的图片我先放上来啊:

DirectorManager,首先在开始的时候直接给所添加的物件附上一个PlayableDirector:
1
|
[RequireComponent(typeof(PlayableDirector))]
|
先解释一下,这个Scrpit的意义:因为在播放动画的过程中,我需要一个管理导演的脚本,这个导演有自己的剧本,
他有可能要演出正面刺,背面刺,开宝箱,和Boss决战时最后一刀重击致命的一刀,这就是此代码的目的。
首先我命名的是PlayableDirector ,然后定义了正面刺的剧本(此剧本)从Unity中直接拖入就行了:
1 2 3 4 5
|
public PlayableDirector pd; public TimelineAsset frontStab;
public ActorManager Attacker; public ActorManager Victim; //上述两行是将Attacker 和 Victim 加入
|
然后在Start里面去获取这个PlayerableDirector:
1 2 3
|
pd = GetComponent<PlayableDirector>(); pd.playOnAwake = false; //这一行是为了把PlayOnWake设置为false pd.playableAsset = Instantiate(frontStab);
|
frontStab轨道如下:

去用foreach去读frontStab的每一轨的东西,然后去判断每一个的名字:
1 2 3 4 5 6 7 8 9
|
if (track.streamName == "attacker Animation") { pd.SetGenericBinding(track.sourceObject,am.ac.anim); }
if (track.streamName == "victim Animation") { pd.SetGenericBinding(track.sourceObject,am.ac.anim); }
|
在Update中去看是哪个Layer来播放这个动画(下方是仅作为测试所用):
1 2 3 4
|
if (Input.GetKey(KeyCode.H)&& gameObject.layer==LayerMask.NameToLayer("Player")) { pd.Play(); }
|
去检测是Player层如果是的话就会播放(在此也可以调节为Enemy,那么就会是黑骑士插我们)。
今天就到这里吧,背了好几个list的单词,我得去消化消化了。再见各位:

原文:大专栏 ?DirectorManager设置