Version: 2022.3

IAnimationWindowPreview

interface in UnityEngine.Animations

切换到手册

描述

允许类通过将 AnimationClipPlayable 节点提供给 Animation 窗口 PlayableGraph 来修改其在 Animation 窗口中的采样方式。该类还必须继承自 MonoBehaviour

另请参阅:AnimationScriptPlayable

using UnityEngine;
using UnityEngine.Animations;
using UnityEngine.Playables;

[RequireComponent(typeof(Animator))] public class ExampleScript : MonoBehaviour, IAnimationWindowPreview { public Vector3 offset = Vector3.zero;

private AnimationScriptPlayable m_Playable; private AnimationJob m_Job; private Vector3 m_CurrentOffset;

struct AnimationJob : IAnimationJob { public TransformStreamHandle transform; public Vector3 offset;

public void ProcessRootMotion(AnimationStream stream) { Vector3 position = transform.GetLocalPosition(stream); position += offset;

transform.SetLocalPosition(stream, position); }

public void ProcessAnimation(AnimationStream stream) { } }

public void StartPreview() { m_CurrentOffset = offset; }

public void StopPreview() { }

public void UpdatePreviewGraph(PlayableGraph graph) { if (m_CurrentOffset != offset) { m_Job.offset = offset; m_Playable.SetJobData(m_Job);

m_CurrentOffset = offset; } }

public Playable BuildPreviewGraph(PlayableGraph graph, Playable input) { Animator animator = GetComponent<Animator>();

m_Job = new AnimationJob(); m_Job.transform = animator.BindStreamTransform(transform); m_Job.offset = offset;

m_Playable = AnimationScriptPlayable.Create(graph, m_Job, 1);

graph.Connect(input, 0, m_Playable, 0);

return m_Playable; } }

公共函数

BuildPreviewGraph将自定义 Playable 节点附加到 Animation 窗口 PlayableGraph。
StartPreview在 Animation 窗口开始预览 AnimationClip 时的通知回调。
StopPreview在 Animation 窗口停止预览 AnimationClip 时的通知回调。
UpdatePreviewGraph在 Animation 窗口对 AnimationClip 采样之前更新其 PlayableGraph 时的通知回调。