zoukankan      html  css  js  c++  java
  • unity_animator_stop_replay(重新播放)

    对于一个Animation重复播放,但在隐藏后,再次显示播放会出现有些属性未复原

    问题描述

    特效同事给的Animation中更改了物体的很多属性,如Active,Alpha, Scale,Position等等,物体本身需要重复利用,因此当不需要使用时不直接销毁而是隐藏等需要时再显示,但是在隐藏后发现再次显示的时候有些属性不会自动复原。

    解决办法

    1. 在Animator Controller中添加一个空的 Animator State 为New State,并拷贝动作相同的 animation clip
    2. 设置 New State 的 Speed 为 0 ,让动画不会播放且停在第1帧
    3. 设置 New State 为 Default State (默认播放)

    重复播放

    m_animator.Play("attack_1",0,0f);
    

    状态重置

    当动画播放完成后,重置状态

    // 重置Animator
    public void ResetAnimator(){
    	m_animator.Play ("New State");
    }
    

    如上所说在放进对象池之前(即acitve设为false之前)把动画状态机(Animator)设置为播放第一个动画(Animation),然后刷新状态(调用ResetAnimator())即可。

    其它信息

    部分参考:https://blog.csdn.net/u013236878/article/details/52813994,但作者提到的方法我测试不可行。

    m_animator.Play ("New State");
    m_animator.Update (0);
    

    我的Unity版本: Unity5.3.7

  • 相关阅读:

    类(重要的很)
    异常
    异常
    面向对象oop接口
    面向对象oop多态
    Day10_数组(下)
    Day09_数组(上)
    Day08_网络编程(上)
    Day07_java对象下
  • 原文地址:https://www.cnblogs.com/zhaoqingqing/p/11649670.html
Copyright © 2011-2022 走看看