问题
我在笔记(4)中后来又引用了Hierarchy中的Transform对象Transform obj,发现一些问题。
要么无法拖入进去对象,要么拖入进去保存后,再次编辑或者运行的时候发现obj丢失了。
我们还是用修改下笔记(4)的部分代码来解决。
csharp
[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 等资源可使用它来创建对场景对象的引用。