【Unity】游戏体销毁重新实例化GameObject后相同结构动画的衔接

本文主要是介绍【Unity】游戏体销毁重新实例化GameObject后相同结构动画的衔接,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

游戏体销毁重新实例化GameObject后相同结构动画的衔接

今天在做现在的小项目时,遇到一个动画上的问题:当动画正在播放的时候游戏体被销毁,产生新的游戏体(这个游戏体和上一个游戏体有相同结构的Animator控制体,但其中的Clip可能不同)替换上一个被销毁的游戏体时,如果不对动画做特定处理,就会出现动画出错的问题(新产生的游戏体会默认播放default的动画)。

需要解决的问题:

  • 我们需要知道当前的Animator正在播放哪一个Animation
  • 我们需要知道当前的Animation播放到什么地方了

问题的解决:

  • 查看文档可以发现,Animator中有GetCurrentAnimatorClipInfoGetCurrentStateInfo两个看起来能返回有用信息的公共方法,经试验,发现GetCurrentStateInfo有用,我们可以使用其返回的AnimatorStateInfo来获取当前正在播放的动画片段,以及播放到底规范化时间,通过AnimatorStateInfo.IsName可以比对得出当前播放动画片段的名称,eg.

AnimatorStateInfo animatorState = this.getComponentInChildren().GetCurrentAnimatorStateInfo(0);
animatorState.IsName("Base Layer.HandBite");
float normalizedTime = animatorState.normalizedTime;

于是我们得到了当前播放动画的片段名和播放的规范化时间,然后销毁旧对象,实例化新对象,由于Animator结构和相应clip的关键帧时间相同,直接调用public void Play(string stateName, int layer = -1, float normalizedTime = float.NegativeInfinity);赋值相关片段名和时间的参数即可在相同位置继续动画了。

这篇关于【Unity】游戏体销毁重新实例化GameObject后相同结构动画的衔接的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/154386

相关文章

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

Python循环结构全面解析

《Python循环结构全面解析》循环中的代码会执行特定的次数,或者是执行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都执行一次,这篇文章给大家介绍Python循环结构解析,感兴趣的朋友跟随... 目录for-in循环while循环循环控制语句break语句continue语句else子句嵌套的循

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创