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

网站接入服务单位名称泉州网站

网站接入服务单位名称,泉州网站,建设网站的要点,衡水网站开发一.StateMachineBehaviour概述 状态机行为是一类特殊脚本。与将常规 Unity 脚本 (MonoBehaviour) 附加到单个游戏对象类似,您可以将 StateMachineBehaviour 脚本附加到状态机中的单个状态。因此可编写一些将在状态机进入、退出或保持在特定状态时执行的代码。这意味…

一.StateMachineBehaviour概述

状态机行为是一类特殊脚本。与将常规 Unity 脚本 (MonoBehaviour) 附加到单个游戏对象类似,您可以将 StateMachineBehaviour 脚本附加到状态机中的单个状态。因此可编写一些将在状态机进入、退出或保持在特定状态时执行的代码。这意味着您不必编写自己的逻辑来测试和检测状态的变化。

参考官方手册:状态机行为

二.StateMachineBehaviour脚本创建

如上图所示,选中状态节点,点击Add Behavior按钮创建脚本后,双击进入脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class attackState : 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 state//override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)//{//    //}// 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)//}
}

脚本继承StateMachineBehaviour并有五个虚方法,比较常用的是前面3个

三.案例演示

Demo说明:模型初始为idle状态,按下Q播放攻击动作,进入动作,动作进行中,动作结束时引擎会自动调用OnStateEnter,OnStateUpdate,OnStateExit

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class attackState : StateMachineBehaviour
{public int m_enterNum = 0;override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex){m_enterNum++;Debug.Log(string.Format("OnStateEnter, m_enterNum = {0}", m_enterNum));}override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex){Debug.Log("OnStateUpdate");}override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex){Debug.Log("OnStateExit");}}

事件方法参数说明:

  • animator:脚本所在状态节点所在的animator组件
  • AnimatorStateInfo:以get属性为主的结构体
  • layerIndex:脚本所在状态节点的动画层索引

下面代码展示MonoBehaviour访问StateMachineBehaviour

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Robot : MonoBehaviour
{private Animator m_animator;private attackState m_attackState;void Start(){m_animator = GetComponent<Animator>();m_attackState = m_animator.GetBehaviour<attackState>();}void Update(){if (Input.GetKeyDown(KeyCode.Q)){m_animator.SetTrigger("attack");Debug.Log(string.Format("进入attack状态之前 m_enterNum = {0}", m_attackState.m_enterNum));}}
}

http://www.yayakq.cn/news/705495/

相关文章:

  • 网站如何做seo推广学做面包到什么网站
  • 网站域名登陆友链交换有什么作用
  • 国家城乡与住房建设部网站网站建设 金手指排名霸屏
  • 网站建设中英文表述wordpress logo 修改
  • 网站快速收录软件大连企业网站排名
  • 餐厅网站建设文案书两学一做 专题网站
  • 如何做旅游计划的网站少林寺网站谁做的
  • 番禺区移动端网站制作美图秀秀在线制作
  • 云县网站建设找那家网站开发维护公司
  • 集客营销软件官方网站网站建设过程中什么最重要
  • wordpress站点美化免费图片制作网站模板
  • 微信支付 公司网站菏泽网站建设推广
  • 六安开发区网站建站技术博客
  • 文山网站建设公司如何做网站主页
  • 2019年做网站还有机会吗石碣镇网站建设
  • 个人怎么开通微信小程序成都外贸seo
  • 个人网站号备案吗杭州网站推广方式
  • 桂林做网站电话号码软广告经典案例
  • 平顶山河南网站建设农家乐网站模板
  • 淘宝网站制作公司哪家好wordpress用户邀请注册
  • 网站设计软件开发百度推广关键词规划师
  • 网站建设栏目流程全民体育世界杯
  • 开发东莞网站制作公司莱芜网吧恢复营业
  • 90设计网站创建时间在线报名网站建设
  • 备案要关闭网站吗上海市工商局企业查询
  • 教师做爰网站互联网站备案登记表
  • 建设铝合金窗网站公司网站建设制作全包
  • 好点子网站建设网站建设与维护实训总结
  • 网站模板怎么弄django做的网站有哪些
  • yellow网站推广联盟网店推广软件有哪些