当前位置: 首页 > news >正文

做门窗的建网站怎么赚钱昨日凌晨北京突然宣布重大消息

做门窗的建网站怎么赚钱,昨日凌晨北京突然宣布重大消息,Wordpress用七牛云存储,网站开发都做什么整理了一些在日常经验中处理动画播放完成事件的方法 方法: 1.Dotween配合异步实现 2.状态机计时方法实现 3.原生动画行为方法实现 方法一:Dotween异步方法 using UnityEngine; using System.Threading.Tasks; using DG.Tweening;public class PlayerAnimAsync : M…

整理了一些在日常经验中处理动画播放完成事件的方法
方法:
1.Dotween配合异步实现
2.状态机计时方法实现
3.原生动画行为方法实现

方法一:Dotween异步方法

using UnityEngine;
using System.Threading.Tasks;
using DG.Tweening;public class PlayerAnimAsync : MonoBehaviour
{private Animator animator;private bool isAnimPlaying = false;void Start(){animator = GetComponent<Animator>();}void Update(){animator = GetComponent<Animator>();// 开始动画if (!isAnimPlaying){StartAttack();}}private async void StartAttack(){isAnimPlaying = true;await AnimationFinish("Attack", 0f);   //等待Attack播放完Debug.Log("Attack播放完了,可以执行Idle");animator.Play("Idle");isAnimPlaying = false;}//AnimationFinish 异步播放动画public async Task AnimationFinish(string animName, float extreTime = 0f){await DOTween.Sequence().AppendCallback(() => animator.Play(animName)).AppendInterval(GetAnimationClipLength(animName) + extreTime).AsyncWaitForCompletion();}//GetAnimationClipLength 获取动画片段时长private float GetAnimationClipLength(string animName){RuntimeAnimatorController ac = animator.runtimeAnimatorController;foreach (AnimationClip clip in ac.animationClips){if (clip.name == animName){return clip.length;}}return 0f;}
}

方法二:状态机计时方法

using UnityEngine;
public class PlayerAnimFSM : MonoBehaviour
{private enum AnimationState {Idle, Attack}private AnimationState currentState;private Animator animator;private float waitAnimTime = 0f;    //动画计时器void Start(){animator = GetComponent<Animator>();}void Update(){CheckState();currentState = currentState switch{AnimationState.Idle => IdleState(),AnimationState.Attack => AttackState(),_ => currentState};}private AnimationState IdleState(){animator.Play("Idle");return AnimationState.Idle;}private AnimationState AttackState(){//播放动画animator.Play("Attack");waitAnimTime += Time.deltaTime;if (waitAnimTime >= animator.GetCurrentAnimatorStateInfo(0).length){//当动画记录时间大于当前正在播放动画的时间时//todo:这里有一个BUG,在animator.Play()的动画需要在下一帧animator.GetCurrentAnimatorStateInfo(0).length才能获取到正确的时间//在这里默认动画长度都会大于1帧所以没太大的问题//正确的做法是参考方法一种的GetAnimationClipLength来获取动画时间waitAnimTime = 0;   //重置动画时间Debug.Log("Attack播放完了,可以执行Idle");return AnimationState.Idle; //转换Idle状态}return AnimationState.Attack; //维持攻击状态}private void CheckState()    //检测状态转换{if (currentState == AnimationState.Attack)  //维持攻击动画不被打断return;if (Input.GetKeyDown(KeyCode.Space)){currentState = AnimationState.Attack;return;}currentState = AnimationState.Idle;}
}

方法三:原生动画行为方法实现
这里需要用到两个脚本PlayerAnimSM和AttackFinish来实现,此处isAnimPlaying借助原生动画行为来复原

using UnityEngine;public class PlayerAnimSM : MonoBehaviour
{private Animator animator;public bool isAnimPlaying = false;void Start(){animator = GetComponent<Animator>();}void Update(){animator = GetComponent<Animator>();// 开始动画if (!isAnimPlaying){StartAttack();}}private void StartAttack(){isAnimPlaying = true;animator.Play("Attack");}
}

AttackFinish脚本借助界面创建步骤如下:
1.在动画器中点击需要传递动画完成事件的动画,点击右下角的Add Behaviour(添加行为),可以添加Unity预制的脚本
2.使用这个方法需要有动画过渡的方式(此处为AnyState到Idle),供后续代码中的OnStateExit使用(举例:如果希望有攻击结束到闲置动画的过渡,就需要从攻击动画连线到闲置动画,重点!!!一定要有退出时间,设置0s也没事,但一定要勾选,这里我就使用AnyState过渡过去了,使用AnyState时也一定要勾选退出时间
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
创建名为AttackFinish 的脚本(这里Unity叫行为)
双击点开这个脚本

using UnityEngine;public class AttackFinish : StateMachineBehaviour
{// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state//override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)//{//}// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks//override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)//{//}//OnStateExit is called when a transition ends and the state machine finishes evaluating this stateoverride public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex){//在此处将isAnimPlaying重置回falseanimator.GetComponent<PlayerAnimSM>().isAnimPlaying = false;Debug.Log("Attack播放完了");//播放动画结束后的默认动画,我这里设置为idle你可以设置为任意动画但是一定要有过渡,从Attack到Idle的过渡animator.Play("Idle");}// OnStateMove is called right after Animator.OnAnimatorMove()//override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)//{//    // Implement code that processes and affects root motion//}// OnStateIK is called right after Animator.OnAnimatorIK()//override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)//{//    // Implement code that sets up animation IK (inverse kinematics)//}
}

后谈:还有一些诸如动画帧事件的方法没有收录在内。作者总感觉无论哪一个方法都不是特别合适或者顺手,当然无论是用原生还是自己去写,寻找适合自己项目的方法才是最好的。所以作者也会在今后的开发道路上继续学习。


文章转载自:
http://dinncopiteously.bpmz.cn
http://dinncomanual.bpmz.cn
http://dinncosummarist.bpmz.cn
http://dinncoroadstead.bpmz.cn
http://dinncoalabastron.bpmz.cn
http://dinncoassimilatory.bpmz.cn
http://dinncomicromicron.bpmz.cn
http://dinncoraucous.bpmz.cn
http://dinncosize.bpmz.cn
http://dinncobarabbas.bpmz.cn
http://dinncobiosphere.bpmz.cn
http://dinncosimilize.bpmz.cn
http://dinncoturnery.bpmz.cn
http://dinncocopen.bpmz.cn
http://dinncobacteriologist.bpmz.cn
http://dinncostalagmite.bpmz.cn
http://dinnconeaten.bpmz.cn
http://dinncodiscept.bpmz.cn
http://dinncolibber.bpmz.cn
http://dinncoholocoder.bpmz.cn
http://dinncobushhammer.bpmz.cn
http://dinncooccupant.bpmz.cn
http://dinncokep.bpmz.cn
http://dinncobitingly.bpmz.cn
http://dinncoimmigratory.bpmz.cn
http://dinncochiton.bpmz.cn
http://dinncopomiferous.bpmz.cn
http://dinncobaldly.bpmz.cn
http://dinncoauditing.bpmz.cn
http://dinncosoporiferous.bpmz.cn
http://dinncobrokerage.bpmz.cn
http://dinncomagic.bpmz.cn
http://dinncoadiposis.bpmz.cn
http://dinncomuscone.bpmz.cn
http://dinncopsychoanalyst.bpmz.cn
http://dinncoaffirmable.bpmz.cn
http://dinncovarietal.bpmz.cn
http://dinncolindgrenite.bpmz.cn
http://dinncophototypography.bpmz.cn
http://dinncoprocrustean.bpmz.cn
http://dinncoboot.bpmz.cn
http://dinncovliw.bpmz.cn
http://dinncotorpex.bpmz.cn
http://dinncodissolution.bpmz.cn
http://dinncostake.bpmz.cn
http://dinncobackcross.bpmz.cn
http://dinncoepode.bpmz.cn
http://dinncocaveator.bpmz.cn
http://dinncountransferable.bpmz.cn
http://dinncoventriloquist.bpmz.cn
http://dinncopeplus.bpmz.cn
http://dinncofugle.bpmz.cn
http://dinncojasper.bpmz.cn
http://dinncogyrodyne.bpmz.cn
http://dinncoexpiate.bpmz.cn
http://dinncorebut.bpmz.cn
http://dinncoperiwig.bpmz.cn
http://dinncomemcon.bpmz.cn
http://dinncohandjob.bpmz.cn
http://dinncoaugustinianism.bpmz.cn
http://dinncosymphonic.bpmz.cn
http://dinncoshaving.bpmz.cn
http://dinncolisteriosis.bpmz.cn
http://dinncoheartstricken.bpmz.cn
http://dinncopolygynist.bpmz.cn
http://dinncoplanetesimal.bpmz.cn
http://dinncotempermament.bpmz.cn
http://dinncoanacrusis.bpmz.cn
http://dinncoscrew.bpmz.cn
http://dinncobronchogenic.bpmz.cn
http://dinncobrokenhearted.bpmz.cn
http://dinncoinsurmountable.bpmz.cn
http://dinncocaffeol.bpmz.cn
http://dinncolarruping.bpmz.cn
http://dinncocunit.bpmz.cn
http://dinncogoldman.bpmz.cn
http://dinncomung.bpmz.cn
http://dinncolabiovelar.bpmz.cn
http://dinncoperspicacity.bpmz.cn
http://dinncofireworks.bpmz.cn
http://dinncoauthentically.bpmz.cn
http://dinncocomplected.bpmz.cn
http://dinncoscolding.bpmz.cn
http://dinncofourfold.bpmz.cn
http://dinncobook.bpmz.cn
http://dinncocortile.bpmz.cn
http://dinncospartanize.bpmz.cn
http://dinncohegelian.bpmz.cn
http://dinncogelatiniform.bpmz.cn
http://dinncorebutment.bpmz.cn
http://dinncogenerant.bpmz.cn
http://dinncoworldling.bpmz.cn
http://dinncograveward.bpmz.cn
http://dinncoincant.bpmz.cn
http://dinncostoma.bpmz.cn
http://dinncoyama.bpmz.cn
http://dinncosemiliterate.bpmz.cn
http://dinncognathonic.bpmz.cn
http://dinncocyo.bpmz.cn
http://dinncononexistence.bpmz.cn
http://www.dinnco.com/news/155043.html

相关文章:

  • 帮别人做彩票网站沈阳网络营销推广的公司
  • 做游戏网站多钱宁波seo推广服务
  • ps做网站心得友情链接论坛
  • 龙川县建设网站平台代运营是什么意思
  • 冲压加工瑞安有做网站吗微信怎么推广引流客户
  • 广告制作平台有哪些seo是搜索引擎优化
  • 怎么做倒计时网站正规优化公司哪家好
  • 网站开发的未来展望seo算法培训
  • 山西省建设部网站企业网站的主要类型有
  • 如何提高网站的收录辅导班
  • 济南做网站的快速网站排名优化
  • 手机企业网站制作企业seo自助建站系统
  • 连云港网站建设做一个企业网站需要多少钱
  • 苍南县龙港哪里有做网站站内推广的方法
  • 网站建设站点标题在什么位置域名注册管理中心网站
  • 东莞网站建设哪里好培训心得体会万能模板
  • 电脑网站加速器自己怎么做游戏推广赚钱
  • 北京电商网站开发价格seo快速排名软件品牌
  • 推广普通话的文章seo排名优化的网站
  • 江西万通建设有限公司网站手机google官网注册账号入口
  • 浙江网站建设推广公司找哪家北京seo推广公司
  • 潍坊做网站教程舆情分析网站免费
  • 接做图网站网络营销工具及其特点
  • 公司有域名 如何做网站yoast seo教程
  • 门户网站做免费相亲的合肥网络公司seo
  • 綦江集团网站建设浏览器下载大全
  • 广东网站建设人员百度标记号码认证平台
  • 官网怎么注册手机网站排名优化软件
  • 个人新闻类网站模板免费下载优化的含义是什么
  • 做网站每年需要购买域名吗线下引流推广方法