Unity3d 4及之前的版本中动画的播放用的animation,可直接获取其播放持续长度。但5.x及以后的版本中都是用animator来播放动画了。

https://docs.unity3d.com/Manual/AnimationOverview.html

While Mecanim is recommended for use in most situations, Unity has retained its legacy animation system which existed before Unity 4. You may need to use when working with older content created before Unity 4. For information on the Legacy animation system, see this section

关于在animator下如何获取其播放持续时长,很多人用的 GetCurrentAnimatorStateInfo 及 GetNextAnimatorStateInfo 等,但这个都不是最终核实的解决方案。

如下才是通过Animator动画状态机获取任意animation clip的准确播放持续时长的正确的、准确的姿势:

///获取动画状态机animator的动画clip的播放持续时长
///@MarsZ 2017年12月19日20:46:20
///site:www.u3dnotes.com
public static class AnimatorExt
{
public static float GetClipLength(this Animator animator,string clip)
{
if(null== animator || string.IsNullOrEmpty(clip) || null== animator.runtimeAnimatorController)
return 0;
RuntimeAnimatorController ac = animator.runtimeAnimatorController;
AnimationClip[] tAnimationClips = ac.animationClips;
if( null == tAnimationClips || tAnimationClips.Length <= 0) return 0;
AnimationClip tAnimationClip ;
for (int tCounter = 0 ,tLen = tAnimationClips.Length; tCounter < tLen ; tCounter ++)
{
tAnimationClip = ac.animationClips[i];
if(null != tAnimationClip && tAnimationClip.name == clip)
return tAnimationClip.Length;
}
return 0F;
}
}

Ref:
1、https://docs.unity3d.com/ScriptReference/Animator.html
2、https://docs.unity3d.com/ScriptReference/RuntimeAnimatorController.html
3、http://www.u3dnotes.com/archives/1131 (原创首发地址,转载请保留)

Unity3D中通过Animator动画状态机获取任意animation clip的准确播放持续时长的更多相关文章

  1. Unity动画知识之二:Animator动画状态机

    上次我们讲过Unity游戏动画从入门到住院,今天我们来讲一下动画状态机. 好了,现在我们已经成功的导入了动画.接下来要玩的东西就很装13啦.因为大部分动画师是用不到这家伙的,需要掌握这个技能的,至少也 ...

  2. Animator动画状态机的简单使用

    一.动画状态机的使用 1.动画状态机说明 2.动画切换箭头的Inspector面板 3.动画的Inspector面板 二.动画状态机的使用和脚本控制 1.动画状态机的使用  2.动画状态机的控制脚本 ...

  3. Unity Animator动画状态机 深入理解(一)

    接触Unity以来就已经有了Animator,Animation用的少,不过也大概理解他俩之间的一个区别于联系. 图中其实就是Animator和Animation之间的区别于联系了,啊!你肯定会告诉我 ...

  4. (转) Unity3D中角色的动画脚本的编写(三)

    在上一篇,我们具体的讲解了有关动画的融合,也提到了有关动画状态的权重问题.那么这次,我来以一个例子的形式来向大家讲解动画的叠加,或许会涉及到多方面的知识,我力求一次讲清.好了,我们开始吧! 首先我们必 ...

  5. (转) [教程] Unity3D中角色的动画脚本的编写(一)

    ps: 这两天研究unity3d,对动画处理特别迷糊,不知FBX导入以后,接下来应该怎么操作,看到这篇文章,感觉非常好,讲解的很详细. 已有好些天没写什么了,今天想起来该写点东西了.这次我所介绍的内容 ...

  6. JS指定音频audio在某个时间点进行播放,获取当前音频audio的长度,音频时长格式转化

    前言: 今天接到一个需求,需要获取某个.mp3音频文件的时间长度和指定音频audio在某个时间点进行播放(比如说这个视频有4分钟,我要让它默认从第2秒的时候开始播放),这里当然想到了H5中的audio ...

  7. 转 [教程] Unity3D中角色的动画脚本的编写(二)

              在上一篇,我们介绍了有关Animation这个类中的部分方法,我后来想了想,这么介绍也不是个办法(其实有些方法我自己也没用过),该介绍点实际的东西了,毕竟我们是要做东西出来的.那好 ...

  8. Unity Animator动画状态机 深入理解(二)IK控制

    IK还是一个很神奇和实用的东西啊,起码可以用代码来控制人物骨骼位置还是很爽的.因为不是动画师~ 这篇可能跟Animator没啥关系了哈,都是代码层的. 看了一官方的案例,老的,有些问题,自己修改了一下 ...

  9. Unity Animator动画状态机 深入理解(三)二维混合树

    介绍二维之前,先说说一维吧~ 这个是通过旋转角度速度快慢来表现身体的大转和中转~ 通过一个-133~133的数值来进行控制. 注:后面的那个对钩是镜像的意思. 其实二维混合树并没有想象中的那么难.先来 ...

随机推荐

  1. Leetcode题解(29)

    93. Restore IP Addresses 题目 分析:多重循环,判断小数点合适的位置 代码如下(copy网上) class Solution { public: vector<strin ...

  2. Hat's Fibonacci

    Problem Description A Fibonacci sequence is calculated by adding the previous two members the sequen ...

  3. Day1作业-模拟登录

    # /usr/bin/env python# -*- coding: utf-8 -*-# Author:jenvid.yangimport getpassimport shutiluserspwd ...

  4. 编译安装PHP 时遇到问题解决方法.

    编译安装PHP时出现下面的错误代码: error 2 checking for pkg-config... /usr/bin/pkg-config configure: error: Cannot f ...

  5. Robotframework-Appium系列:安装配置

    1.   Robotframework-android系列:安装配置 1.1. 安装环境 64位win10家庭中文版 1.1. 安装说明 网上robotframework-appium安装资料也不少, ...

  6. scrapy爬虫框架之理解篇(个人理解)

    提问: 为什么使用scrapy框架来写爬虫 ?            在python爬虫中:requests  +  selenium  可以解决目前90%的爬虫需求,难道scrapy 是解决剩下的1 ...

  7. angualr4 路由 总结笔记

    使用cli命令创建根路由模块 ng g cl app.router 或自己建一个路由配置文件 如:app/app.router.ts // app/app.router.ts // 将文件修改为 im ...

  8. 基础进阶(一)之HashMap实现原理分析

    HashMap实现原理分析 1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端. 数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大.但数组的二 ...

  9. Mybatis框架的搭建和基本使用方法

    1.1MyBatis的下载 最新yBatis可以在github官网上下载: https://github.com/mybatis/mybatis-3 1.2 Mybatis Jar包 1.3MyBat ...

  10. 人生苦短,python是岸.

    人生苦短,python是岸. 愿付一生,应许之诚.