文档章节

关于unity3d动画设置参数延迟的问题

g
 gametodoN
发布于 2017/08/16 23:36
字数 746
阅读 63
收藏 0
点赞 0
评论 0

        今天在写动画状态过度的时候发现的一个问题,比如我们要做取消技能(动画)后摇时候可能会遇到,比如现在我们有两个动画状态A和B,通过一个bool类型值对他们之间进行转换,当bool类型为true时从A到B,当bool类型为false时候从B到A,两个过度状态都不勾选has exit time,我们测试在Start函数里面设置bool类型为true然后用invoke函数过个0.1s去把这个bool类型设置为false,按照我们之前的设想它应该会0.1s后返回动画B,但是其实它并没有,而是有一定的延迟。我们用动画去测试,我们的动画是0.66秒,0.4秒时候会出发攻击特效,但是我不过给invoke函数多少延迟让它去设置bool类型为false ,都不会按照我们的设想返回动画A,而且每次都把攻击特效发出去了。  

        刚开始测试的时候,我是在invoke函数里面不去设置动画bool类型为false,而是直接让它Play动画A,它是可以精确的执行的,比如invoke在0.39后设置攻击特效就不触发,但是在0.41设置就会触发攻击特效。但是这种方法不是我们想要的。后来想到了Animator.StringToHash这个方法,之前并没有体会到这个方法的用处,在这里深刻理解到了它存在的意义,如果我们用Animator.SetBool这个方法去设置bool类型的状态,如果用的是string类型去判断,unity在设置动画参数的时候需要进行一个比较,我们传入的如果是字符串,需要对应到变量名,所以比较耗时,就出现了延迟的情况。如果我们事先用Animator.StringToHash的方法去给每个动画设置好hash值,在SetBool或者其他参数设置方法里面,用之前设置好的hash值去做直接的比较,效率就很快很多,经过测试,同Play()方法达到的效果一样,已经完全满足我们之前的设想。所以以后想要精确延迟的情况下,一定要使用Animator.StringToHash方法去给每个动画参数一个hash值,用hash值去进行比较,这样效率就会高很多了。

 还有个问题就是当你在同一帧时候去设置一个动画参数,让它过度到一个动画的时候,在设置完后立刻判断它的状态是否为过度到的那个动画,实际那个时候它的状态还不是你要过度的那个动画,并不是预想的立刻就能转换到你想的那个动画的,所以大家尽量避免这个问题的出现。

© 著作权归作者所有

共有 人打赏支持
g
粉丝 3
博文 6
码字总数 3935
作品 0
Unite Beijing 2018|行业应用精彩议题曝光

我们不久之前为大家提前曝光了部分大会精彩技术议题,引起了大家的广泛关注。作为世界顶尖的内容创作引擎,Unity不仅仅可用于跨平台的游戏开发,越来越多的开发者将Unity运用到制造业,汽车,...

weixin_41849687 ⋅ 04/20 ⋅ 0

Substance与PBR工作流总结

PBR介绍 PBR即基于物理的渲染,是一套尝试基于真实世界光照物理模型的渲染技术合集,使用了一种更符合物理学规律的方式来模拟光线,达到更真实的渲染效果,而且可以直接通过物理参数来直观地...

leohijack ⋅ 05/11 ⋅ 0

Unite Beijing 2018 | 技术专场部分精彩议题曝光

离5月11-13日的Unite Beijing 2018的开幕仅剩一个半月了,届时来自全球的Unity技术达人,行业精英和全球合作伙伴将为你带来史无前例的80余场技术演讲,内容涵盖Unity跨平台内容开发经验,标杆...

weixin_41849687 ⋅ 04/20 ⋅ 0

Unity2018新功能抢鲜 | 粒子系统改进

本文首发于“洪流学堂”微信公众号。 洪流学堂,让你学Unity快人几步 Unity2018.1中对粒子系统进行了重大改进,包括功能、性能很多方面,快来看看吧! GPU网格实例化 粒子系统现在支持GPU实例...

zhenghongzhi6 ⋅ 04/17 ⋅ 0

Unity Shader学习记录(八)

Unity Shader学习记录(八)   大部分情况下,Shader的运行过程是与时间无关的静态过程,换句话说游戏进行过程中渲染的结果不会有什么变化;动态光影或许是比较典型的例外,但它们和游戏运...

soul900524 ⋅ 04/13 ⋅ 0

关于Unity3D Assets资源目录结构管理

u3d默认目录 ) (插件)不是C#语言写一些插件和库,比如javajsC++,u3d默认目录,u3d是C#编译器,其他语言只有这个目录才能识别 资源,需要动态加载的资源放在这里,打包时在这个文件夹里的所有文件...

lizhenxiqnmlgb ⋅ 05/23 ⋅ 0

引领前沿科技-Unite Beijing 2018核心主题抢先知

5月11日-13日,Unite Beijing 2018大会将于北京国家会议中心举办!作为开发者的年度盛会,我们将邀请来自全球的Unity技术达人和行业精英,为大家带来超过70场主题多元的技术课程,包括聚焦U...

weixin_41849687 ⋅ 04/20 ⋅ 0

Unity-BattleStar丨6.动画系统-让BattleStar游戏中的角色动起来

课前资源下载链接 项目目标:实现NPC防御和踢腿动作 一、导入模型 1、新建一个空项目,导入Cha07.unitypackage,打开Scenes里的BattleStar_GuideScene并进入,点击右上角的Default按钮,切换...

weixin_38239050 ⋅ 04/17 ⋅ 0

Unity 3D 开发《王者荣耀》:Hello World

Unity 安装 Unity 官方网站:https://unity3d.com 点击右上角的 获取Unity 系统要求 OS: Windows 7 SP1+, 8, 10, 64-bit versions only; Mac OS X 10.9+. GPU:有DX9(着色器模型2.0)功能的...

iOSDevLog ⋅ 05/22 ⋅ 0

Unity网页数据交互基本原理

1. u3d是一个3D游戏引擎由于和编辑器集成在一起 所以也可以理解为一个制作/开发平台 2. u3d使用javascript C#作为核心脚本语言 来驱动整个游戏引擎 3. 平台可以发布为Exe执行文件或者打包为供...

qq_30279553 ⋅ 04/22 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

Spring Bean的生命周期

前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模...

素雷 ⋅ 今天 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部