学习Playable的大致逻辑和组成,最后用Playable播放一个简单的动画。
Playable介绍
-
Playables API 支持动态动画混合。这意味着场景中的对象可以提供自己的动画。例如,武器、宝箱和陷阱的动画可以动态添加到 PlayableGraph 并使用一段时间。
-
Playables API 可让您轻松播放单个动画,而不会产生创建和管理 AnimatorController 资源所涉及的开销。
-
Playables API 允许用户动态创建混合图并直接逐帧控制混合权重。
-
可在运行时创建 PlayableGraph,根据条件按需添加可播放节点。可量身定制 PlayableGraph 来适应当前情况的要求,而不是提供一个巨大的“一刀切”图形来启用和禁用节点。
以上摘自官方中文手册介绍https://docs.unity3d.com/cn/current/Manual/Playables-Graph.html
简要示例如上。
安装Playable可视化插件 com.unity.playablegraph-visualizer ,用 git from url。
安装完在这里打开窗口。
找一个AnimatorController就能看到对应的Playable可视化,说明其也是基于Animator运作的。
代码实现创建PlayableGraph并播放clip
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Animations;
public class Animation_Controller : MonoBehaviour
{
[SerializeField] Animator animator;
[SerializeField] AnimationClip animationClip;
private PlayableGraph graph;
private void Start()
{
// 1.创建图
graph = PlayableGraph.Create("Animation");
// 2.设置图的时间模式
graph.SetTimeUpdateMode(DirectorUpdateMode.GameTime);
// 3.创建ClipPlayable然后去包裹一个AnimationClip
AnimationClipPlayable clipPlayable = AnimationClipPlayable.Create(graph, animationClip);
// 4.创建Output
AnimationPlayableOutput playableOutput = AnimationPlayableOutput.Create(graph, "Animation", animator);
// 5.让ClipPlayable链接上OutPut
playableOutput.SetSourcePlayable(clipPlayable);
// 6.播放图
graph.Play();
}
private void OnDisable()
{
// 7.销毁PlayableGraph
graph.Destroy();
}
}
需要animationClip来指定播放的动画片段,一个空的AnimatorController作为载体接受PlayableOutPut。
第三步说明下,在Playable上看到的蓝色AnimationClip作为节点实际省略了Playable后缀,他里面包裹了一个AnimationClip。
创建的PlayableGraph如下:
运行后即可播放AnimationClip动画片段。