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

u3d动画系统五【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));}}
}

相关文章:

u3d动画系统五【StateMachineBehaviour类】

一.StateMachineBehaviour概述 状态机行为是一类特殊脚本。与将常规 Unity 脚本 (MonoBehaviour) 附加到单个游戏对象类似&#xff0c;您可以将 StateMachineBehaviour 脚本附加到状态机中的单个状态。因此可编写一些将在状态机进入、退出或保持在特定状态时执行的代码。这意味…...

IS-IS协议

IS-IS协议介绍 IS-IS&#xff08;Intermediate System to Intermediate System&#xff09;协议是一种链路状态的内部网关协议&#xff08;IGP&#xff09;&#xff0c;用于在同一个自治系统&#xff08;Autonomous System, AS&#xff09;内部的路由器之间交换路由信息。IS-I…...

使用C++实现RSA加密解密

一&#xff0c;RSA简介。 RSA&#xff0c;一种非对称加密方式。是目前为止最有影响力的加密算法之一&#xff0c;而且是第一个同时应用于加密和数字签名的算法。 其原理为&#xff1a;两个大素数相乘容易&#xff0c;但是若想将两个大素数相乘的积再分解为两个原始的素数很难…...

C++归并与快速

快排 #include<bits/stdc.h> #include<algorithm> using namespace std; void f(int,int); void cl(int,int,int); void q(int,int); int a[211]; int n; int main(){cin>>n;for(int i0;i<n;i){cin>>a[i];}q(0,n-1);for(int i0;i<n;i){cout<…...

金蝶云苍穹踩过的坑(慢慢更新)

IDEA不能用最新版&#xff0c;不然搜不到金蝶的插件。 我用的是2024.1.7/2023.1.7 IDEA里增加金蝶插件库的地址也变了&#xff0c;现在是 https://tool.kingdee.com/kddt/idea-updatePlugins.xml 金蝶云苍穹部署在服务器 MAC本地IDEA调试的时候&#xff0c;登录N次能成功一次…...

AndroidStudio——安卓项目结构与文件介绍

一、AndroidStudio界面 一个安卓项目界面主要由以下几部分组成&#xff1a; 1.菜单栏&#xff1a;位于顶部&#xff0c;基本的各项菜单操作 2.项目结构&#xff1a;通常位于左侧&#xff0c;展示当前项目的目录结构 3.编辑窗口&#xff1a;通常位于中间&#xff0c;可以用于编…...

华为自反ACL实验

一、实验背景 做这个实验的原因是最近公司里上了三台小程序服务器&#xff0c;由于三台服务器的端口都映射出去了&#xff0c;领导要求A网段的三台服务器不能访问内网B&#xff0c;C网段&#xff0c;同时B、C网段内网用户可以访问A段的94、95、96服务器&#xff1b; 也就是PC4\…...

yml和xml分别代表什么

YML 和 XML 是两种不同的数据序列化格式&#xff0c;它们在软件开发和数据交换中有着广泛的应用&#xff1a; YAML (YAML Ain’t Markup Language): YAML 是一种用于数据序列化的人类可读语言。它被设计为易于阅读和编写&#xff0c;特别适合于配置文件。YAML 使用缩进来表示数…...

Qt多线程编程

在Qt中&#xff0c;多线程编程是一个常见的需求&#xff0c;特别是当你需要执行耗时的后台任务而不希望阻塞用户界面时。多线程编程它允许应用程序同时执行多个任务&#xff0c;从而提高性能和响应速度。Qt提供了一套完善的多线程支持&#xff0c;包括线程类&#xff08;QThrea…...

springboot438校园志愿者管理系统(论文+源码)_kaic

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统校园志愿者管理系统信息管理难度大&#xff0c;容错率低&…...

PostgreSQL 常用运维SQL整理

一、查询并杀会话 -- 查询会话 select pid,usename,client_addr,client_port,query_start,query,wait_event from pg_stat_activity; -- 杀会话 select pg_terminate_backend(pid号); -- 使用如下命令自动生成杀会话语句 select datid,datname,pid,usesysid,usename,applicat…...

Debezium Oracle CTAS 解析器实现:基于 ANTLR 的 CREATE TABLE AS SELECT 语句解析

Debezium Oracle CTAS 解析器实现:基于 ANTLR 的 CREATE TABLE AS SELECT 语句解析 本文详细介绍了 Debezium Oracle 连接器中如何解析 CREATE TABLE AS SELECT (CTAS) 语句,通过具体的实现代码帮助读者理解 ANTLR 监听器在复杂 SQL 解析中的应用。 文章目录 Debezium Oracle…...

从零开始学docker(五)-可用的docker镜像

最近docker镜像都不能访问&#xff0c;目前亲测可用的docker镜像可用&#xff0c;并拉取mysql测试完成。 [缺点] docker search 查不到镜像的索引列表&#xff0c;只能手动查询索引目录&#xff08;解决方案在最后&#xff09;。 linux服务器vim打开镜像文件daemon.json vim /e…...

力扣——322. 零钱兑换

给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1 。 你可以认为每种硬币的数量是无限的。 示…...

.Net_比对Json文件是否一致

简介 该方法用于比较两个Json文件是否完全一致&#xff0c;仅考虑内容若两个文件中的内容只是顺序不一致&#xff0c;内容是一样的&#xff0c;那么也代表这两个文件是相等的 实现代码 调用 using CompareJsonFiles;Console.WriteLine(" 输入信息 ");Console.WriteL…...

科研笔记:ARR 与 ACL rolling

1 ARR 介绍 ARR 提供 评审服务 —— 仅限评审 —— 对于提交的论文。评审不会针对特定会议/场所&#xff0c;但评审标准与传统会议的主会场长文或短文提交要求相同&#xff08;如 ACL 或其他由 ACL 主办的重要会议&#xff09; 2 提交论文进行 ARR 评审 提交截止日期 每两个…...

【2024】Camunda常用功能基本详细介绍和使用-上 (1)

这里写目录标题 前言一、 介绍基本概念介绍1.BPMN2.Form3.DMN 二、Camunda使用1、下载安装1.1、camunda-modeler&#xff1a;BPMN绘画工具1.2、camunda-bpm-run&#xff1a;web端控制页面 2、创建流程2.1、部署一个基础流程2.2、添加用户任务2.2.1、绑定表单2.2.1.1、Generated…...

用人话讲计算机:Python篇!(十二)正则运算+re模块

目录 一、正则表达式 &#xff08;1&#xff09;什么是正则表达式 &#xff08;2&#xff09;它的结构及使用 示例&#xff1a; 1.字符 . &#xff08;←这里有个小点哦&#xff09; 2.字符 | 3.字符 [ ] 4.字符^ 5.字符\d &#xff08;3&#xff09;补充&#xff…...

使用create-react-app创建工程时报错处理

1&#xff1a;全局安装create-react-app npm install -g create-react-app 2&#xff1a;切换到项目要创建的目录下 cd /d G:\vsCode_project\react 3&#xff1a;使用脚手架命令创建工程 create-react-app 项目名 项目名命名要遵循npm包命名规范&#xff1a;数字、小写字…...

C# 探险之旅:第三十五节 - 类型class之抽象类 (Abstract Class) 和 抽象方法 (Abstract Method)

&#x1f44b; 嗨&#xff0c;勇敢的探险家们&#xff01;欢迎再次踏上C#的神秘之旅。今天&#xff0c;我们要进入一片既神秘又充满无限可能的领域——抽象类与抽象函数的奇幻森林。想象一下&#xff0c;你是一名勇敢的骑士&#xff0c;要在这片森林里寻找传说中的“编程之宝”…...

OpenClaw学术助手:千问3.5-27B自动校对论文格式与参考文献

OpenClaw学术助手&#xff1a;千问3.5-27B自动校对论文格式与参考文献 1. 为什么需要自动化论文校对工具 作为科研工作者&#xff0c;我经历过无数次论文投稿前的格式调整噩梦。记得去年投稿某核心期刊时&#xff0c;光是调整参考文献格式就花了整整两天——期刊要求APA第六版…...

从课程设计到毕业设计:手把手教你用STC89C52和DS1302做一个带温度显示的电子钟(附完整代码)

从课程设计到毕业设计&#xff1a;STC89C52与DS1302打造高精度温度显示电子钟实战指南 1. 项目规划与硬件选型 在开始动手之前&#xff0c;我们需要对整个项目进行系统性的规划。一个完整的电子钟系统需要考虑时间显示、温度监测、用户交互和电源管理等多个功能模块。对于高校电…...

Bloaty二进制大小分析器:10个常见问题解决技巧

Bloaty二进制大小分析器&#xff1a;10个常见问题解决技巧 【免费下载链接】bloaty Bloaty: a size profiler for binaries 项目地址: https://gitcode.com/gh_mirrors/bl/bloaty Bloaty是一款强大的二进制大小分析工具&#xff0c;能够帮助开发者深入了解二进制文件的大…...

Windows下OpenClaw安装避坑:Qwen3.5-9B模型接入全记录

Windows下OpenClaw安装避坑&#xff1a;Qwen3.5-9B模型接入全记录 1. 为什么选择OpenClawQwen3.5-9B组合 去年12月我在整理年度技术文档时&#xff0c;被重复的文件归类操作折磨得苦不堪言。当时尝试过用Python脚本自动化处理&#xff0c;但面对动态变化的文件命名规则总是力…...

2026年上海,这些行业内正规的GEO企业,你知道有哪些吗?

在上海这座充满活力与创新的城市&#xff0c;GEO&#xff08;地理信息&#xff09;行业发展得如火如荼。随着科技的不断进步&#xff0c;地理信息技术在各个领域的应用越来越广泛&#xff0c;众多正规的GEO企业也如雨后春笋般涌现。今天&#xff0c;就让我们一起来了解一下上海…...

OpenClaw技能开发入门:为Qwen3.5-9B-AWQ-4bit定制图片OCR模块

OpenClaw技能开发入门&#xff1a;为Qwen3.5-9B-AWQ-4bit定制图片OCR模块 1. 为什么需要定制OCR技能 去年我在整理几千张产品截图时&#xff0c;发现现有的OCR工具存在三个痛点&#xff1a;无法自动矫正倾斜拍摄的图片、识别结果缺乏结构化处理、无法与工作流联动。这正是Ope…...

OpenClaw+千问3.5-27B创作助手:从大纲到公众号图文全自动生成

OpenClaw千问3.5-27B创作助手&#xff1a;从大纲到公众号图文全自动生成 1. 为什么需要全自动创作助手 作为一个技术博主&#xff0c;我每周都要产出2-3篇技术文章。最痛苦的环节不是写作本身&#xff0c;而是那些重复性的准备工作&#xff1a;构思大纲、寻找配图、调整格式、…...

gciWidget:面向车载嵌入式系统的轻量级GUI组件库

1. 项目概述gciWidget是面向大众汽车集团&#xff08;Volkswagen Group&#xff09;CARIAD 车载软件平台定制开发的轻量级图形用户界面&#xff08;GUI&#xff09;组件库&#xff0c;专为嵌入式车载显示系统设计。其核心定位并非通用型 GUI 框架&#xff08;如 LVGL 或 TouchG…...

如何在不同的机器上运行多个OpenClaw实例?

想让不同机器上的 OpenClaw 一起协作&#xff0c;其实就是搭建一个跨机器的 “小龙虾通信网络”。实现方式分两种&#xff1a;简单直连&#xff08;适合测试 / 小集群&#xff09;和远程网关&#xff08;适合生产 / 稳定协作&#xff09;。下面给你一套直接能跑的完整方案。一、…...

当企业拥有了创新的 “上帝视角”,会发生什么?

当企业拥有了创新的 “上帝视角”&#xff0c;会发生什么&#xff1f;&#xff0d;&#xff0d;研企配 AI 大数据&#xff0c;打开中国企业产业洞察的上帝之窗在商业史上&#xff0c;所有的溃败都始于认知的闭环。14年前&#xff0c;诺基亚CEO约玛奥利拉在手机业务售出的发布会…...