在unity animator中单个Animator Clip中点击Add Behaviour增加当执行该动画时的一些状态代码,请看如下

创建完之后基本代码结构如下:(如果想修改默认代码结构,请看示例:教程示例

1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4
5 public class Hero_walk : StateMachineBehaviour
6 {
7 // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
8 //override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
9 //{
10 //
11 //}
12
13 // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
14 //override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
15 //{
16 //
17 //}
18
19 // OnStateExit is called when a transition ends and the state machine finishes evaluating this state
20 //override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
21 //{
22 //
23 //}
24
25 // OnStateMove is called right after Animator.OnAnimatorMove()
26 //override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
27 //{
28 // // Implement code that processes and affects root motion
29 //}
30
31 // OnStateIK is called right after Animator.OnAnimatorIK()
32 //override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
33 //{
34 // // Implement code that sets up animation IK (inverse kinematics)
35 //}
36 }

我们在来看一下StateMachineBehaviour元数据

 1 #region 程序集 UnityEngine.AnimationModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
2 // D:\WorkTools\Unity\2019.4.16f1c1\Editor\Data\Managed\UnityEngine\UnityEngine.AnimationModule.dll
3 #endregion
4
5 using UnityEngine.Animations;
6 using UnityEngine.Scripting;
7
8 namespace UnityEngine
9 {
10 //
11 // 摘要:
12 // StateMachineBehaviour is a component that can be added to a state machine state.
13 // It's the base class every script on a state derives from.
14 [RequiredByNativeCode]
15 public abstract class StateMachineBehaviour : ScriptableObject
16 {
17 protected StateMachineBehaviour();
18
19 public virtual void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex);
20 public virtual void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex, AnimatorControllerPlayable controller);
21 public virtual void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex);
22 public virtual void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex, AnimatorControllerPlayable controller);
23 public virtual void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex);
24 public virtual void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex, AnimatorControllerPlayable controller);
25 //
26 // 摘要:
27 // Called on the first Update frame when making a transition to a state machine.
28 // This is not called when making a transition into a state machine sub-state.
29 //
30 // 参数:
31 // animator:
32 // The Animator playing this state machine.
33 //
34 // stateMachinePathHash:
35 // The full path hash for this state machine.
36 public virtual void OnStateMachineEnter(Animator animator, int stateMachinePathHash);
37 public virtual void OnStateMachineEnter(Animator animator, int stateMachinePathHash, AnimatorControllerPlayable controller);
38 //
39 // 摘要:
40 // Called on the last Update frame when making a transition out of a StateMachine.
41 // This is not called when making a transition into a StateMachine sub-state.
42 //
43 // 参数:
44 // animator:
45 // The Animator playing this state machine.
46 //
47 // stateMachinePathHash:
48 // The full path hash for this state machine.
49 public virtual void OnStateMachineExit(Animator animator, int stateMachinePathHash);
50 public virtual void OnStateMachineExit(Animator animator, int stateMachinePathHash, AnimatorControllerPlayable controller);
51 public virtual void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex);
52 public virtual void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex, AnimatorControllerPlayable controller);
53 public virtual void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex);
54 public virtual void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex, AnimatorControllerPlayable controller);
55 }
56 }

是不是很方便呢,今天刚好找到了这个东西

Unity StateMachineBehaviour的更多相关文章

  1. Unity的stateMachineBehaviour

    Unity5新增的StateMachineBehaviour是对状态机的内置,确实方便了很多,这里记录它的两个问题: 1.如果正在执行的状态被打断,当前状态的OnStateExit不会被执行,该问题在 ...

  2. Unity 动画系统 StateMachineBehaviour 动画状态机

  3. Unity-Animator深入系列---StateMachineBehaviour初始化时间测试

    回到 Animator深入系列总目录 结果和想的有点出入 测试结果: 1.SMB初始化会被调用多次,次数不可控,当Animator组件重复开关则重复初始化. 2.SMB支持构造函数 MyClass p ...

  4. 从Unity中的Attribute到AOP(七)

    本章我们将依然讲解Unity中的Attribute,继续命名空间在UnityEngine里的. PropertyAttribute,这个特性主要来控制变量或者类在Inspector里面的显示方式.和P ...

  5. 关于Unity中Mecanim动画的动画状态代码控制与代码生成动画控制器

    对于多量的.复杂的.有规律的控制器使用代码生成 动画状态代码控制 1:每个动画状态,比如进入状态,离开状态, 等都有可能需要代码来参与和处理,比如,进入这个动画单元后做哪些事情,来开这个动画单元后做哪 ...

  6. 【Unity】状态机的状态改变及其回调

    问:怎么知道状态机发生了改变?即如何得知从一个状态切换到了另一个状态? 答:Unity使用StateMachineBehaviours类来描述状态机的行为,当状态机处于不同的状态时,会触发不同的回调. ...

  7. Unity 动画系统目录 之 Animation

    返回 Unity 动画系统目录 官方文档 Animation:https://docs.unity3d.com/ScriptReference/Animation.html Animator:http ...

  8. Unity C# 关于Attribute的使用

    最近在研究Attribute,感觉挺好玩,搜到一篇不错的文章,分享给大家 原文:未知?找到后补上! 举两个例子,在变量上使用[SerializeFiled]属性,可以强制让变量进行序列化,可以在Uni ...

  9. Unity3d入门 - 关于unity工具的熟悉

    上周由于工作内容较多,花在unity上学习的时间不多,但总归还是学习了一些东西,内容如下: .1 根据相关的教程在mac上安装了unity. .2 学习了unity的主要的工具分布和对应工具的相关的功 ...

随机推荐

  1. 并发王者课 - 青铜4:synchronized用法初体验

    在前面的文章<双刃剑-理解多线程带来的安全问题>中,我们提到了多线程情况下存在的线程安全问题.本文将以这个问题为背景,介绍如何通过使用synchronized关键字解这一问题.当然,在青铜 ...

  2. 快速熟悉windows操作

    快捷键 win + E : 打开我的电脑 Ctrl+Shift+Esc:打开资源管理器 Alt +F4 :关闭当前窗口 Win + R:打开命令窗口 DOS 命令 打开CMD 的方式 Win+R:输入 ...

  3. 适用于windows10 Linux子系统的安装管理配置 How To Management Windows Subsystem for Linux WSL

    什么是WSL Windows Subsystem for Linux 简称WLS,适用于Linux的Windows子系统,可以直接在Windows上运行Linux环境(包括大部分命令行工具) Linu ...

  4. [bug] Window远程连接hdfs错误:java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCrc32.nativeComput

    原因 hadoop.dll 版本问题 解决 查询远程主机中hadoop版本,下载相同或稍高版本的hadoop.dll,将下载的 hadoop.dll 复制到windows系统的c:/window/sy ...

  5. pycharm编辑器,各种设置及配置修改

    Pycharm中如何设置默认自动换行 只对当前文件有效的操作:菜单栏->View -> Active Editor -> Use Soft Wraps: 如果想对所有文件都有效,就要 ...

  6. vue实例属性之el,template,render--(转载)

    转载链接:https://www.cnblogs.com/camille666/p/vue_instance_prop_el_template_render.html 一.el,template,re ...

  7. python内存管理总结

    之前在学习与工作中或多或少都遇到关于python内存管理的问题,现在将其梳理一下. python内存管理机制 第0层 操作系统提供的内存管理接口 c实现 第1层 基于第0层操作系统内存管理接口包装而成 ...

  8. unity用json和服务器数据交互

    第一种类型:服务器json数据是个对象 /// <summary> /// 获取用户信息初始化信息 /// </summary> void InitUserMessage() ...

  9. 游刃于私有网络与公共网络之间的NAT

    网络地址转化技术NAT 1. 应用场景 2. NAT 2.1 静态NAT 2.2 动态NAT 2.3 NAPT 2.4 EASY IP 3. NAT配置 3.1 静态NAT 3.2 动态NAT 3.3 ...

  10. python实现布隆过滤器及原理解析

    python实现布隆过滤器及原理解析     布隆过滤器( BloomFilter )是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地 ...