回到 Animator深入系列总目录

Animator自带了简单的动画录制,回放功能。但可惜的是不支持持久化的数据输出。因而不能作为录像保存

不过这种可以作为竞速,格斗类游戏在结束时经常出现的游戏回放,还是比较有用的


测试所用脚本

using UnityEngine;

public class AnimatorRecordingExample : MonoBehaviour
{
public Animator animator;
bool mIsStartPlayback;
float mTime; void Update()
{
if (mIsStartPlayback)
{
mTime += Time.deltaTime;
if (animator.recorderStopTime > mTime)
{
animator.playbackTime = mTime;
Debug.Log("animator.playbackTime: " + animator.playbackTime);
}
}
else
{
Debug.Log("animator.recorderStartTime " + animator.recorderStartTime);
Debug.Log("animator.recorderStopTime: " + animator.recorderStopTime);
}
} [ContextMenu("StartRecording")]
void StartRecording()
{
animator.StartRecording();
} [ContextMenu("StopRecording")]
void StopRecording()
{
animator.StopRecording();
} [ContextMenu("StartPlayback")]
void StartPlayback()
{
animator.StartPlayback();
mTime = animator.recorderStartTime;
mIsStartPlayback = true;
} [ContextMenu("StopPlayback")]
void StopPlayback()
{
animator.StopPlayback();
mIsStartPlayback = false;
}
}

AnimatorRecordingExample

调用方式:

写了一个比较简单的脚本测试录制功能

大致逻辑是先调用StartRecording进行录制,结束时调用StopRecording

然后再需要时进行回放,需要注意调用StartPlayback开始回放之后,回放的时间需要手动更新

每一帧的更新值可以使用DeltaTime,而开始值可以用animator.recorderStartTime

这时,还需要判断playback的时间是否大于录制结束时间,否则会有警告:

Animator Recorder does not have recorded data at given time, Animator will update based on current AnimatorParameters

还需要注意两点

1.animator.StartRecording(...)的参数如果小于1,会被判定为不限时间录制。

2.非Animator驱动的位移,都会被录制进去。由于Animator的更新时间是在Update之后,LateUpdate之前。

所以移动控制写在LateUpdate里的时候,在回播时会有操作冲突


下面这个gif可以演示具体过程(录制时有些卡顿):

Unity-Animator深入系列---录制与回放的更多相关文章

  1. Fms3和Flex打造在线视频录制和回放

    本博推荐文章快速导航: Sql Server2005 Transact-SQL 新兵器学习MCAD学习 代码阅读总结 ASP.NET状态管理 DB(数据库)WAPWinFormFlex,Fms aie ...

  2. monkeyrunner之录制与回放(七)

    monkeyrunner为我们提供了录制 回放的功能. 录制与回放使用原因:实际项目,需求变更频繁,且测试任务多,我们没有足够时间去写测试脚本,这是就可以进行录制脚本,然后通过回放,跑完需要的流程. ...

  3. Android自动化学习笔记之MonkeyRunner:MonkeyRunner的录制和回放

    ---------------------------------------------------------------------------------------------------- ...

  4. IOS开发之小实例--创建一个简单的用于视频录制和回放的应用程序

    前言:还是看了一下国外的入门IOS文章:<Create a Simple App for Video Recording and Playback>,主要涉及视频录制和回放的功能的基本实现 ...

  5. TinyTask Portable(录制和回放电脑操作过程)

    一直想找个软件,可以回放自己或他人编码的过程.我认为,只有亲眼看到别人是怎么做的,才能更好的了解他人的思路. 虽然找到http://thecodeplayer.com/这个,但它只能回放它上面的代码, ...

  6. ROS_Kinetic_13 ROS数据录制与回放

    ROS_Kinetic_13 ROS数据录制与回放 官网教程:http://wiki.ros.org/cn/ROS/Tutorials/Recording%20and%20playing%20back ...

  7. 【转】Unity Animator卡顿研究

    Unity Animator卡顿研究 发表于2017-07-26  点赞3 评论3 分享 分享到 2.3k浏览 想免费获取内部独家PPT资料库?观看行业大牛直播?点击加入腾讯游戏学院游戏程序行业精英群 ...

  8. Android自动化测试之MonkeyRunner录制和回放脚本

    Android自动化测试之MonkeyRunner录制和回放脚本(十一) 分类: 自动化测试 Android自动化 2013-02-22 10:57 7346人阅读 评论(2) 收藏 举报 andro ...

  9. Linux下利用script命令录制并回放终端会话

    Linux下利用script命令录制并回放终端会话 核心命令 script 和 scriptreplay 录制屏幕 script -t 2>timescript typescript 命令解释: ...

随机推荐

  1. 转:python webdriver API 之下拉框处理

    下拉框也是 web 页面上非常常见的功能,webdriver 对于一般的下拉框处理起来也相当简单,要想定位下拉框中的内容,首先需要定位到下拉框:这样的二次定位,我们在前面的例子中已经有过使用,下面通过 ...

  2. Java基础(56):Java---Assertion的试用(华为OJ里的Java题目的用例检测就是用的断言)

    一.assertion的意义和用法 J2SE 1.4在语言上提供了一个新特性,就是assertion功能,它是该版本在Java语言方面最大的革新. 从理论上来说,通过 assertion方式可以证明程 ...

  3. C++之路进阶——codevs1285(宠物收养所)

    1285 宠物收养所  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond   题目描述 Description 最近,阿Q开了一间宠物收养所.收养所提供两种服 ...

  4. Hibernate的关系配置

    一对一: <hibernate-mapping> <class name="cn.jnit.bean.User" table="T_user" ...

  5. 通过JavaScript设置样式和jQuey设置样式,还有随机数抛出水果的习题

    一:通过JavaScript的方式设置样式(:拿习题为例): var shuiguo = document.getElementById('fruit');     shuiguo.style.bac ...

  6. HDU 2366 Space(二分计数)

    Problem Description During a programming contest, teams cannot sit close to each other, because then ...

  7. oracle ebs 采购订单关闭之PL/SQL实现方法

    应客户需求,需要写个脚本,批量关闭Bonus Item类型的采购订单,在metalink上搜索到一些方法,但是都测试不通.原来需要将代码生成一个并发程序.下面是测试成功的代码. 1.首先创建一个存储过 ...

  8. 夺命雷公狗---Thinkphp----9之中间层的创建,防止跨目录访问

    我们创建一个CommonController.class.php的中间层,让后让别的控制器都直接继承CommonController这个控制器即可决解跨目录访问的问题, <?php namesp ...

  9. small details

    1.操作数据时,一般能入库就入库,或者用xml文件,用文件操作比较复杂

  10. sql语句中where和having的区别

    WHERE语句在GROUPBY语句之前:SQL会在分组之前计算WHERE语句. HAVING语句在GROUPBY语句之后:SQL会在分组之后计算HAVING语句.