Unity编辑器下如何控制播放Animator
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍Unity编辑器下如何控制播放Animator,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在Unity编辑器的Scene视图进行控制播放Animator,可以
千家信息网最后更新 2026年10月31日Unity编辑器下如何控制播放Animator
这篇文章主要介绍Unity编辑器下如何控制播放Animator,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
在Unity编辑器的Scene视图进行控制播放Animator,可以借助方法StartPlayback、StopPlayback、StartRecording和StopRecording,具体可以参照以下例子:

创建一个带Controller的Animator对象,可以看到此时人物呈现T型姿势。附上新脚本EditAnimator,此为空脚本,如下:
using UnityEngine;public class EditAnimator : MonoBehaviour {}创建一个这个脚本的编辑器类EditAnimatorInspector,代码如下:
using UnityEditor;using UnityEngine;[CustomEditor(typeof(EditAnimator))]public class EditAnimatorInspector : Editor{ /// /// 滑动杆的当前时间 /// private float m_CurTime; /// /// 是否已经烘培过 /// private bool m_HasBake; /// /// 当前是否是预览播放状态 /// private bool m_Playing; /// /// 当前运行时间 /// private float m_RunningTime; /// /// 上一次系统时间 /// private double m_PreviousTime; /// /// 总的记录时间 /// private float m_RecorderStopTime; /// /// 滑动杆总长度 /// private const float kDuration = 30f; private Animator m_Animator; private EditAnimator editAnimator { get { return target as EditAnimator; } } private Animator animator { get { return m_Animator ?? (m_Animator = editAnimator.GetComponent()); } } void OnEnable() { m_PreviousTime = EditorApplication.timeSinceStartup; EditorApplication.update += inspectorUpdate; } void OnDisable() { EditorApplication.update -= inspectorUpdate; } public override void OnInspectorGUI() { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Bake")) { m_HasBake = false; bake(); } if (GUILayout.Button("Play")) { play(); } if (GUILayout.Button("Stop")) { stop(); } EditorGUILayout.EndHorizontal(); m_CurTime = EditorGUILayout.Slider("Time:", m_CurTime, 0f, kDuration); manualUpdate(); } /// /// 烘培记录动画数据 /// private void bake() { if (m_HasBake) { return; } if (Application.isPlaying || animator == null) { return; } const float frameRate = 30f; const int frameCount = (int)((kDuration * frameRate) + 2); animator.Rebind(); animator.StopPlayback(); animator.recorderStartTime = 0; // 开始记录指定的帧数 animator.StartRecording(frameCount); for (var i = 0; i < frameCount - 1; i++) { // 这里可以在指定的时间触发新的动画状态 if (i == 200) { animator.SetTrigger("Dance"); } // 记录每一帧 animator.Update(1.0f / frameRate); } // 完成记录 animator.StopRecording(); // 开启回放模式 animator.StartPlayback(); m_HasBake = true; m_RecorderStopTime = animator.recorderStopTime; } /// /// 进行预览播放 /// private void play() { if (Application.isPlaying || animator == null) { return; } bake(); m_RunningTime = 0f; m_Playing = true; } /// /// 停止预览播放 /// private void stop() { if (Application.isPlaying || animator == null) { return; } m_Playing = false; m_CurTime = 0f; } /// /// 预览播放状态下的更新 /// private void update() { if (Application.isPlaying || animator == null) { return; } if (m_RunningTime > m_RecorderStopTime) { m_Playing = false; return; } // 设置回放的时间位置 animator.playbackTime = m_RunningTime; animator.Update(0); m_CurTime = m_RunningTime; } /// /// 非预览播放状态下,通过滑杆来播放当前动画帧 /// private void manualUpdate() { if (animator && !m_Playing && m_HasBake && m_CurTime < m_RecorderStopTime) { animator.playbackTime = m_CurTime; animator.Update(0); } } private void inspectorUpdate() { var delta = EditorApplication.timeSinceStartup - m_PreviousTime; m_PreviousTime = EditorApplication.timeSinceStartup; if (!Application.isPlaying && m_Playing) { m_RunningTime = Mathf.Clamp(m_RunningTime + (float)delta, 0f, kDuration); update(); } }} 检视器效果如下:

点击"Bake",可以看到此时人物姿势变成了动画状态的第一帧,如下所示:
拖动滑杆,即可播放当前时间的那一帧,如下所示:
点击"Play",即可以自动播放整个动画,如下所示:
最后,u3dnotes.com温馨提示:通过Unity3d的Wwindow->Animation窗口,可方便地在编辑器线下非运行时预览乃至编辑动画。xD
以上是"Unity编辑器下如何控制播放Animator"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
时间
动画
编辑器
状态
控制
脚本
人物
内容
姿势
滑杆
篇文章
滑动杆
运行
温馨
代码
价值
位置
例子
兴趣
对象
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网络科技
小米移动互联网科技园
西安纸贵互联网科技有限公司
中国互联网科技股
互联网科技会
万易互联网科技有限公司
互联网金融科技创新
天下捷融互联网科技
深圳市运趣互联网科技有限公司
深圳国际航运科技和互联网
互联网企业和科技型企业
互联网科技与大数据专业
未来五年的互联网科技
河南住房之家互联网科技
企晟互联网信息科技有限公司
世界互联网科技成果奖
容联科技互联网电商
悟空问答互联网科技
科技美学互联网 艺术
山东亿川互联网科技有限责任公司
互联网属科技
互联网与科技发展
壕鑫互联网络科技
互联网科技博客
博兴的互联网电子科技公司
互联网科技产品
河南猎农互联网科技有限公司
黑科技闪耀互联网之光
版纳互联网科技选哪家
互联网科技自媒体灵感