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安全错误
数据库的锁怎样保障安全
花魁咖啡
互联网科技官网
互联网最新的科技
互联网巨头反垄断金融科技
北京互联网科技有限公司
广州宏创互联网科技
四川狮子座互联网科技
互联网养老 桔豆科技
广西拼得多互联网科技有限公司
互联网汽车科技小镇
互联网和黑科技的看法
昭通互联网科技选哪家
互联网科技和法律行业
高科技互联网发展前景如何
深圳无忧互联网科技
黑云互联网科技有限公司
富国互联网科技002692
山东大美朱楼互联网科技有限公司
互联网科技接地气
互联网科技新闻
广州大一互联网络科技有限公司
猪兼强互联网科技
互联网科技汛
互联网科技公司名称
中国最先进互联网科技公司
现代互联网科技股
华服互联网科技官网
南平创想时代互联网科技有限公司
九思连强互联网电子科技有限公司
恒生互联网科技趋势