记录环境
- Unity 2020.3.2f1
- Timeline 1.4.6
代码部分
1、 ExposedReference<T> where T : Object
在ScriptableObject或PlayableAsset中引用对象时,默认只能引用Project里的资源。通过ExposedReference包装后,可以引用Scene里的对象或TML Prefab里的子节点。例:ExposedReference<GameObject>
2、 PlayableDirector.stopped
在 PlayableBehaviour.OnBehaviourPause
跟 PlayableBehaviour.OnGraphStop
之前调用,PlayableBehaviour.OnPlayableDestroy
在更后面
这个设计导致一个问题:TML调用方要在播放结束后做一些事情,如果这些事跟某个OnGraphStop、OnPlayableDestroy里的清理一致,则会被覆盖。
例:TML某轨道会移动坐标,并在OnPlayableDestroy里还原;调用方要在TML播放结束后,将其移动到另一个位置。那么回调里的逻辑会被覆盖失效。
3、用PlayableGraph播放Animator,主动执行Evaluate不生效
Animator自身的更新执行的时机比较晚,所以在Update里或者TML的ProcessFrame里调用PlayableGraph.Evaluate
后,执行结果会被Animator的自动更新给覆盖掉。
解决方法
-
PlayableGraph.Evaluate
放在LateUpdate
里执行 - 将Animator自身的PlayableGraph停掉:
animator.playableGraph.Stop()
网友评论