Animator组件关闭再打开后参数丢失问题
问题如下,因为再激活Animator时,它会重置一次,参数也会丢失
这个问题一直存在,论坛给出的解释是把参数缓存下来,在激活时重置
http://answers.unity3d.com/questions/919995/parameters-and-states-of-animator-reset-on-objects.html
我把论坛的脚本修改了一下,在需要关闭GameObject时添加该脚本,再次打开GameObject时会自动删除,即可解决参数丢失问题
//Modify from: http://answers.unity3d.com/questions/919995/parameters-and-states-of-animator-reset-on-objects.html using UnityEngine; using System.Collections.Generic; public class AnimParamRecover : MonoBehaviour { class AnimCacheParam { public AnimatorControllerParameterType type; public string paramName; object mData; public AnimCacheParam(Animator anim, string paramName, AnimatorControllerParameterType type) { this.type = type; this.paramName = paramName; switch (type) { case AnimatorControllerParameterType.Int: this.mData = (int)anim.GetInteger(paramName); break; case AnimatorControllerParameterType.Float: this.mData = (float)anim.GetFloat(paramName); break; case AnimatorControllerParameterType.Bool: this.mData = (bool)anim.GetBool(paramName); break; } } public object getData() { return mData; } } Animator mAnimator; List<AnimCacheParam> mParamsCacheList; bool mIsDisable; void Awake() { Record(); } /// <summary> /// Recovery. /// </summary> void OnEnable() { if (mIsDisable) { mIsDisable = false; } else { return; } Recovery(); Destroy(this); } void OnDisable() { mIsDisable = true; } [ContextMenu("Manual Record")] public void Record() { mParamsCacheList = new List<AnimCacheParam>(); mAnimator = GetComponent<Animator>(); ; i < mAnimator.parameters.Length; i++) { var p = mAnimator.parameters[i]; var animParam = new AnimCacheParam(mAnimator, p.name, p.type); mParamsCacheList.Add(animParam); } } [ContextMenu("Manual Recovery")] public void Recovery() { foreach (var param in mParamsCacheList) { switch (param.type) { case AnimatorControllerParameterType.Int: mAnimator.SetInteger(param.paramName, (int)param.getData()); break; case AnimatorControllerParameterType.Float: mAnimator.SetFloat(param.paramName, (float)param.getData()); break; case AnimatorControllerParameterType.Bool: mAnimator.SetBool(param.paramName, (bool)param.getData()); break; } } mParamsCacheList.Clear(); } }
AnimParamRecover
Animator组件关闭再打开后参数丢失问题的更多相关文章
- Extjs4---Cannot read property 'addCls' of null 或者 el is null 关于tab关闭后再打开不显示或者报错
做后台管理系统时遇到的问题,关于tab关闭后再打开不显示,或者报错 我在新的tabpanel中加入了一个grid,当我关闭再次打开就会报错Cannot read property 'addCls' o ...
- Android实现点击通知栏后,先启动应用再打开目标Activity ,极光推送等推送的也可以参考一下(转)
我因为项目中集成了极光推送,推送的通知栏点开需要确定进入哪个界面就参考了这边文章,感谢作者的无私. 标签: 情况简述 在开发Android app的过程中,遇到这样一个需求:app中启动一个Servi ...
- java在线聊天项目1.0版 异常处理——开启多个客户端,关闭一个客户端后,在其他客户端中再发出信息会出现异常的处理
异常一 只开启一个客户端,输入信息后关闭,客户端出现如下异常 根据异常说明 ChatClientFrame客户端117行 提示原因是Socket关闭 分析原因 客户端代码 while (connect ...
- 点击按钮使用window.open打开页面后,再次点击按钮会再打开一个页面,如何解决?
点击按钮使用window.open打开页面后,再次点击按钮会再打开一个页面,如何解决? window.open("page1.html","win1"); 这句 ...
- 关于数据库一致改关闭下redo日志文件丢失的处理办法的总结
数据库一致性关闭下redo日志文件丢失的处理办法(归档和非归档都行) 1. inactive log 在一致性关闭后删除重启时可以在mount下(不丢失数据) alter database clea ...
- 工控随笔_03_西门子_Step7项目打开后CPU显示问号解决方法
我们在利用西门子的S7-300/400 PLC的编程软件Step7的时候会出现下面如图所示的问题. 在打开项目的时候,我们会在Simatic Manager里面看到CPU以及一些其他一些组件显示问号. ...
- vue 路由传参中刷新页面参数丢失 及传参的几种方式?
在页面跳转中,我通过路由传参,结果发现页面参数丢失了.路径返回了根目录.... 1. 先说下路由传参的几种方式吧? 比如:<div v-for="item in items" ...
- Java socket中关闭IO流后,发生什么事?(以关闭输出流为例)
声明:该博文以socket中,关闭输出流为例进行说明. 为了方便讲解,我们把DataOutputstream dout = new DataOutputStream(new BufferedOutpu ...
- vue 通过 name 和 params 进行调整页面传参刷新参数丢失问题&vue路由可选参数
vue 通过 name 和 params 进行调整页面传参刷新参数丢失问题 router.js: export default new Router({ routes: [ { path: '/', ...
随机推荐
- eclipse Project facet Java version 1.8 is not supported.
在移植eclipse项目时,如果遇到 “Project facet Java version 1.7 is not supported.” 项目中的jdk1.7不支持.说明项目是其他版本jdk编译的, ...
- Leetcode: Perfect Rectangle
Given N axis-aligned rectangles where N > 0, determine if they all together form an exact cover o ...
- Lintcode: Maximum Subarray Difference
Given an array with integers. Find two non-overlapping subarrays A and B, which |SUM(A) - SUM(B)| is ...
- SQL 数据库 子查询、主外键
子查询,又叫做嵌套查询. 将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询. 子查询有两种类型: 一种是只返回一个单值的子查询,这时它可以用在 ...
- iis access denied, you do not have permission.
this kind of problems are usually caused by some IIS configuration issues, like application pool set ...
- WM (Constants)
Create page WM (Constants) Summary WM_* Constants and their definitions or descriptions and what c ...
- openssh设置免密码登录远程服务器
主机 host | 远程机器 server 目标:从host登录到server,免密码输入 host机器: ssh-keygen -t rsa 在~/.ssh/中会生成两个文件 id_rsa.pub和 ...
- 夺命雷公狗---微信开发58----微网站之jquery_mobile之控件介绍
我们上一节课里面介绍了基本的jqm是如何用的了,那么这一节课我们就开始玩玩他的控件 1...布局网格 <!DOCTYPE html> <html> <head> & ...
- Power Gating的设计(概述)
Leakage power随着CMOS电路工艺进程,功耗越来越大. Power Domain的开关一般通过硬件中的timer和系统层次的功耗管理软件来进行控制,需要在一下几方面做trade-off: ...
- MOPSO 多目标例子群优化算法
近年来,基于启发式的多目标优化技术得到了很大的发展,研究表明该技术比经典方法更实用和高效.有代表性的多目标优化算法主要有NSGA.NSGA-II.SPEA.SPEA2.PAES和PESA等.粒子群优化 ...