原理:
1.使用[ExecuteInEditMode]使得脚本在编辑器模式下可以执行到生命周期函数(Awake,OnDisable等等)
2.OnEnable时注册EditorApplication.update回调,OnDisable时反注册EditorApplication.update回调
3.使用Animator的Play函数切换动画,使用Animator的Update函数更新动画
以下脚本绑定在带有Animator组件的节点上,代码实现如下:
using UnityEditor;
using UnityEngine;
[ExecuteInEditMode]
//绑在带有Animator组件的节点上
public class AnimatorPreviewTest : MonoBehaviour
{
private Animator animator = null;
private float preTime = 0;//上一次运行的时间
void Awake()
{
Debug.Log("AnimatorPreviewTest.Awake");
animator = GetComponent<Animator>();
preTime = (float)EditorApplication.timeSinceStartup;
}
public void CustomUpdate()
{
Debug.Log("AnimatorPreviewTest.CustomUpdate");
//计算delta
var delta = (float)EditorApplication.timeSinceStartup - preTim