实现一个功能:UI弹性移动到屏幕外->修改UI上面的内容->移动回屏幕
功能很简单,如果用cocos做就是一句代码的事:执行动作1,添加函数动作,执行动作2
但是我用Unity的UGUI(没有用到任何UI插件)做动画遇到了一些麻烦事。
1、第一个问题:
UI的动画做好之后要修改Animator,不能让它一启动就执行,所以要添加一个默认启动状态。
2、如果这个动画执行结束后(不是循环)不把它切换到其他状态的话,下次执行这个动画有延迟,相当于动画自己跳转自己有延迟。
具体我的做法是:
1、编辑动画
2、修改Animator状态
3、添加相关控制参数和反向执行动画、切换状态的代码
//执行动作
_roleInfoAnimator.Play("RoleInfoPanelMoveOut",0);
_roleInfoAnimator.SetFloat("SingSpeed",1);
_roleInfoAnimator.SetBool("isBack",false);
//动画播放结束方向执行动画
void Update(){
if(GameTools.getInstance().AnimatorIsPlaying(_roleInfoAnimator,"RoleInfoPanelMoveOut")){
//切换文字
//播放返回动画
AnimatorStateInfo info = _roleInfoAnimator.GetCurrentAnimatorStateInfo(0);
_roleInfoAnimator.SetFloat("SingSpeed",-1);
_roleInfoAnimator.SetBool("isBack",true);
}
}
实现效果完成,总体上感觉流程太繁琐,不知道有没有其他更方便的实现方法,如果有看到的同学希望能指点一下!!