回到 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. TIJ——Chapter One:Introduction to Objects

    ///:~容我对这个系列美其名曰"读书笔记",其实shi在练习英文哈:-) Introduction to Objects Object-oriented programming( ...

  2. Lintcode: Kth Smallest Number in Sorted Matrix

    Find the kth smallest number in at row and column sorted matrix. Example Given k = 4 and a matrix: [ ...

  3. hduoj 4706 Children&#39;s Day 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4706 Children's Day Time Limit: 2000/1000 MS (Java/Others) ...

  4. android 测试(转)

    个人接触android的时间也不是很长,稍微总结下在做Android测试的过程中,初次接触的同学需要些什么准备,以及需要些什么知识?下面讲到的东西可能很多人会觉得很简单,但我确实碰到过有新同学对这些点 ...

  5. ajax和servlet交互,表单日历插件,表单验证,form.js

    我的index.jsp <body> <a>点我获取数据</a> <table border=1px> <tr> <td>ID& ...

  6. hdu5390 tree

    先求出dfs序,然后建立线段树,线段树每个节点套一个set. 修改操作只需要改被子树区间完全覆盖的线段树节点,将其节点中set的原来的值删除,加入新值. 询问操作查询单点到根的所有节点上的set中与查 ...

  7. 解决ScrollView与ListView事件冲突

    1,在最近做项目的时候使用ScrollView嵌套ListView的时候发现ListView的滑动效果失效,简单的网上搜索了一下,也就有了下面的解决方法,在ListView中设置事件的监听listvi ...

  8. 整理的java的日期DateUtil

    package cn.knet.data.untils; import java.text.SimpleDateFormat; import java.util.Calendar; import ja ...

  9. logging

    #coding=utf8 import sys, logging   logging.basicConfig(level=logging.INFO,                     forma ...

  10. 对DotNet分布式应用搭建的考虑

    设计前的考虑和准备工作 1 对业务需求的理解重要性远远胜于对技术架构的理解 2 架构包含技术架构和业务架构 3 没有万能和通用的架构,只有符合自身业务需求的架构 4 架构本身的复杂性要截至在架构设计阶 ...