unity - 重置Animator组件状态
2016-10-14 11:04
1526 查看
问题:动画给的Animation更改了物体的很多属性,如Active,Alpha, Scale,Position等等,物体本身需要重复利用,因此使用对象池技术不直接销毁而是隐藏等需要时再显示,但是在隐藏后发现再次显示的时候有些属性不会自动复原。
解决方案:
1:让动画把每个动画的逻辑搞清楚,如果对某个属性有修改,同一个物体的其他动画相应属性都必须存在(当然这件事也可以自己做,不需要动画来做)
2:我们在使用对象池销毁之前(即acitve设为false之前)把动画状态机(Animator)设置为播放第一个动画(Animation),然后刷新状态即可。备注:第一个动画可以自己创建一个空动画(Init)作为动画的开始。
方案一自己决定咯。
方案二:
1:需要在一开始(Awake或者Start)获取第一个动画的名称,如果是自己定义的空动画“Init”,直接使用名字就可以了
然后添加函数Init_Animator()
解决方案:
1:让动画把每个动画的逻辑搞清楚,如果对某个属性有修改,同一个物体的其他动画相应属性都必须存在(当然这件事也可以自己做,不需要动画来做)
2:我们在使用对象池销毁之前(即acitve设为false之前)把动画状态机(Animator)设置为播放第一个动画(Animation),然后刷新状态即可。备注:第一个动画可以自己创建一个空动画(Init)作为动画的开始。
方案一自己决定咯。
方案二:
1:需要在一开始(Awake或者Start)获取第一个动画的名称,如果是自己定义的空动画“Init”,直接使用名字就可以了
string first_animationName = m_animator.GetCurrentAnimatorClipInfo (0) [0].clip.name;
然后添加函数Init_Animator()
<span style="white-space:pre"> </span>/// <summary> /// 重置Animator /// </summary> public void Init_Animator(){ m_animator.Play (first_animationName); m_animator.Update (0); }如上所说在用对象池销毁之前(即acitve设为false之前)把动画状态机(Animator)设置为播放第一个动画(Animation),然后刷新状态(调用Init_Animator())即可。
相关文章推荐
- How do I reset a jquery-chosen select option with jQuery?重置chosen组件值状态
- unity, animator stateMachine立即触发状态转换
- unity的动画状态(animator)
- Unity教程之手把手教你Animator状态机如何切换状态
- unity编辑器拓展四——删除场景空Animator组件
- 【酷熊科技】工作积累 ----------- unity 动态设置 Animator组件的Controller
- Vue 重置组件到初始状态的方法示例
- unity 动画机animator 播放完毕状态监听
- Unity 从Animator组件中获得AnimationClip
- 【unity3d study ---- 麦子学院】---------- unity3d常用组件及分析 ---------- Animator动画状态机
- Unity-Animator在Editor状态下的单个/批量预览工具
- [置顶] Unity中Animation与Animator组件的使用
- Unity动画知识之二:Animator动画状态机
- unity Animator 怎么判断一个动画播放结束
- 【Unity3D游戏开发学习笔记】(四)一切都动起来—Animator组件的应用
- Unity Animator 窗口的控制
- 运用Unity的组件创建服务器和客户端,实现游戏网络化
- Unity/Animator -- 创建Animator Controller
- Vuex异步请求数据后,在组件中获取状态的方法
- Unity入门操作_ UGUI_ 基础组件_024