(二)与animation播放对比
animation播放动画
1、播放默认动画
直接将动画拖入动画对象animation组件的animation变量中,然后加入如下代码既可以播放(此处采用toggle控制动画的播放)
public Animation ani;
public void OnPlayClicked(bool isOn)
{
if(isOn)
{
ani.Play();
}
}
2、采用AddClip方法
此方法为给animation组件通过addclip方法添加动画片段,然后就可以依次播放
//addclip方法
public Animation ani;
public AnimationClip[] aniClip; public void OnPlayClicked(bool isOn)
{
if(isOn)
{
StartCoroutine(Play()) ;
}
}
IEnumerator Play()
{
ani.AddClip(aniClip[0], "1");
ani.Play("1");
yield return new WaitForSeconds(aniClip[0].length+2f);
ani["1"].time = aniClip[0].length;//动画反向播放
ani["1"].speed=-1;
ani.Play("1");
yield return new WaitForSeconds(aniClip[0].length + 2f);
ani.AddClip(aniClip[1], "2");
ani.Play("2");
}
3、采用animation组件的animations数组添加动画片段
在animation组件的animations数组中直接添加动画(此步骤相当于addclip方法),然后根据动画名称就可以播放了。
ani.Play(aniName);
4、直接用动画名字播放
if (isOn)
{
titleAni["TitleMove"].speed = 2;
bottomAni["BottomMove"].speed = 2;
titleAni.Play();
bottomAni.Play();
}
else
{
titleAni["TitleMove"].speed = -2;
bottomAni["BottomMove"].speed = -2;
titleAni["TitleMove"].time = titleAni.clip.length;
bottomAni["BottomMove"].time = bottomAni.clip.length;
titleAni.Play();
bottomAni.Play();
}
动画复位
关于动画播放问题再次追加一点关于动画回到起始位置的问题,动画播放回到起始位置可用ani.Rewind();方法。
采用rewind方法时必须是动画播放过程中使用,stop()后时无法回到起始位置的。
调用rewind后动画虽然会回到原点,但是会继续重复播放,所以在此可以先取样,然后在停止播放。 ani.Play();
ani.Rewind();
ani.Sample();
ani.Stop();
使用上述方法可能会因为clip的现手顺序影响而导致无法复位。如下图所示,我需要播放的动画是Take01-Take04,如果没有Take001,且默认的播放动画animation为Take02,则在播放动画Take01过程时,动画无法直接复位,如果Take01设为默认动画,则除Take01以外,其他动画均无法复位。解决办法为找一个默认动画,只要初始位置为所需的状态即可,设为默认动画,同时,让它为Element0

动画复位还可以采用animator,即设置一个只有几帧的初始状态动画,需要复位是调用开关复位,可以是从any state进入初始动画的开关,也可以是从所有其他动画跳转到初始状态动画的开关(均采用一个参数控制),但是此方法有个问题,即如果在复位过程中存在animator的enabled==false情况(或者animator所在游戏物体setActive(false)qingkuang),则复位时初始动画虽然播放,但是不会复位(也许是因为初始动画是静止的,没有位置形态的改变)。
动画事件:
外部导入的动画legacy类型下(animation)无法在编辑的,也无法添加添加动画事件,但是只要ctrl+D复制一下,复制出来的即可编辑,但是animation要重新新建赋值
(二)与animation播放对比的更多相关文章
- 用Unity的Animation播放Animator动画Clip
简单的动画,其实不需要Animator动画状态机管理,用Animation播放效率更高,但可能由于历史遗留问题,或网上下载的第三方资源,得到的是Animator资源,可以在Clip的Debug试图下, ...
- 搭建rtmp直播流服务之4:videojs和ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)
前面几章讲解了使用 nginx-rtmp搭建直播流媒体服务器; ffmpeg推流到nginx-rtmp服务器; java通过命令行调用ffmpeg实现推流服务; 从数据源获取,到使用ffmpeg推流, ...
- Android动画学习(二)——Tween Animation
前两天写过一篇Android动画学习的概述,大致的划分了下Android Animation的主要分类,没有看过的同学请移步:Android动画学习(一)——Android动画系统框架简介.今天接着来 ...
- CISCO、H3C、华为三层交换机端口二三层切换命令对比
很多人都在问H3C是否有像CISCO三层端口切换类似的命令 switchport . 答案是肯定的.有.很多人都不知道. 其实无论是思科还是H3C还是华为他们都有这样的命令.但是在H3C和华为中不经常 ...
- PYNQ系列学习(二)——pynq与zynq对比(一)
Zynq可扩展处理平台是赛灵思新一代 FPGA的可编程技术的产品系列.与采用嵌入式处理器的FPGA不同,Zynq产品系列的处理系统不仅能在开机时启动,而且还可根据需要配置可编程逻辑.采用这种方法,软件 ...
- rdb和aof二种持久化方式对比(Redis)
我们已经知道对于一个企业级的redis架构来说,持久化是不可减少的 企业级redis集群架构:海量数据.高并发.高可用 持久化主要是做灾难恢复,数据恢复,也可以归类到高可用的一个环节里面去 比如你re ...
- 二、深度解析HTML5之视频播放和音频播放
一:视频播放 传统的视频音频播放是通过flash插件的形式完成,不是所有的浏览器都安装了flash插件,而且手机端不支持flash,这就导致视频和音频的播放会有很大的麻烦. 于是,HTML5增加音频和 ...
- Unity 动画系统 Animation 和 Animator的小实例
本文结合一个很简单的动画demo,分别采用2种方法,来对比Animation和Animator的使用方式: 方法1:单独使用Animation 方法2:Animation结合Animator 动画De ...
- CSS动画-transition/animation
HTML系列: 人人都懂的HTML基础知识-HTML教程(1) HTML元素大全(1) HTML元素大全(2)-表单 CSS系列: CSS基础知识筑基 常用CSS样式属性 CSS选择器大全48式 CS ...
随机推荐
- Julia初学备忘
println("hello!") println("hello!") print("hello!") print("hello! ...
- Angular template ng-template/container/content
1. ng-template 形式:<ng-template>...</ng-template> 默认ng-template中的内容会隐藏; 可通过[ngIf]来控制内容显示隐 ...
- python线程实现异步任务
了解异步编程 楼主在工作中遇到了以下问题,开发接口爬取数据代码完成之后要写入redis缓存,但是在写入缓存的过程花费2-3s,进行这样就大大影响了接口的性能,于是想到了使用异步存储. 传统的同步编程是 ...
- python 处理excel踩过的坑——data_only,公式全部丢失
用openpyxl读取excel的load_workbook有个data_only参数. yb_wb = load_workbook(u"D:\\Desktop\\xxx.xlsx" ...
- linux分析工具之vmstat详解
一.概述 vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.首先我们查看下帮助.如下图所 ...
- [LeetCode] 470. Implement Rand10() Using Rand7()
Given a function rand7 which generates a uniform random integer in the range 1 to 7, write a functio ...
- ELK 学习笔记之 elasticsearch启动时Warning解决办法
elasticsearch启动时Warning解决办法: 转载:http://www.dajiangtai.com/community/18136.do?origin=csdn-geek&dt ...
- JVM(一)内存分配
方法区: ①存储被虚拟机加载的类信息.常量.静态变量.即时编译器编译后的代码数据 ②又称为永久代,仅对于Hotspot来讲,JRockit和IBM J9里面没有永久代的概念,1.8以后是元空间,直接使 ...
- 【JavaScript】使用纯JS实现多张图片的懒加载(附源码)
一.效果图如下 上面的效果图,效果需求如下 1.还没加载图片的时候,默认显示加载图片背景图 2.刚开始进入页面,自动加载第一屏幕的图片 3.下拉界面,当一张图片容器完全显露出屏幕,即刻加载图片,替换背 ...
- mac下idea中安装docker插件
idea中安装docker插件: 点击Intellij IDEA->Preferences...->Plugins->Browse repositories...如下: 点击Inst ...