本文主要是介绍Unity Timeline学习笔记(5) - 自定义轨道切片上变量Transform对象丢失,使用ExposedReference来解决。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题
我在笔记(4)中后来又引用了Hierarchy中的Transform对象Transform obj,发现一些问题。
要么无法拖入进去对象,要么拖入进去保存后,再次编辑或者运行的时候发现obj丢失了。
我们还是用修改下笔记(4)的部分代码来解决。
[DisplayName("玩家固定(Transform)Clip")]
[Serializable]
public class PlayerTransformMixerPlayableAsset : PlayableAsset
{[Tooltip("固定玩家的Transform")]public ExposedReference<Transform> fixedTransform;[Tooltip("结束后返回原始位置")]public bool FinishToBack = true;//public PlayerTransformBehaviour template = new PlayerTransformBehaviour();public ClipCaps clipCaps{get{return ClipCaps.Blending; }}public override Playable CreatePlayable(PlayableGraph graph, GameObject owner){PlayerTransformBehaviour template = new PlayerTransformBehaviour();template.fixedTransform = fixedTransform.Resolve(graph.GetResolver());template.FinishToBack = FinishToBack;return ScriptPlayable<PlayerTransformBehaviour>.Create(graph, template);}}public class PlayerTransformBehaviour : PlayableBehaviour
{public Transform fixedTransform; public bool FinishToBack = true; public float passtime; //计算当前块的播放进度public bool started; //是否刚进入
}
我们需要把面板值加上ExposedReference来添加引用。
然后创建的时候通过fixedTransform.Resolve来赋值就可以了。
说明
ExposedReference 是一个泛型类型,可用于创建对场景对象的引用,以及通过使用上下文对象在运行时解析它们的实际值。ScriptableObject 或 PlayableAsset 等资源可使用它来创建对场景对象的引用。
这篇关于Unity Timeline学习笔记(5) - 自定义轨道切片上变量Transform对象丢失,使用ExposedReference来解决。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!