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

回到 Animator深入系列总目录

结果有点出乎意料。

MyClass

public class MyClass
{
    public MyClass()
    {
        Debug.Log("Init!");
    }
}

TestSMB

public class TestSMB : StateMachineBehaviour
{
    public MyClass obj = new MyClass();

    public override void OnStateMachineEnter(Animator animator, int stateMachinePathHash)
    {
        base.OnStateMachineEnter(animator, stateMachinePathHash);

        Debug.Log("OnStateMachineEnter");
    }
}

MyClass放在TestSMB上初始化,通过log判断初始化了几次

Editor下测试:

build到pc版测试:

很显然,和Editor没关系。初始化次数不可控,Unity内部每次初始化Animator就会被触发。而后续的状态跳转则不会再触发。除非Animator组件重新被关掉,而再次初始化。

和MonoBehaviour的初始化顺序关系,在Awake之前:

时间: 2024-08-05 22:26:41

Unity-Animator深入系列---StateMachineBehaviour初始化时间测试的相关文章

Unity animator:StateMachineBehaviour的一点应用(施工中)

Unity animator:StateMachineBehaviour的一点应用(施工中) 有什么用 直奔主题,我们先讲讲作用,用法,再慢慢解释 一个简单的应用场景:Unity动画状态机中有一个"特色"是,如果你为一组Animator添加一个triggerA的parameter,用于控制动画A的播放(这里我们举例triggerA触发一次,进入动画A播放一次),你会发现,快速出发两次或多次triggerA,不加入限制条件,动画A将再播放完后再播放一次或多次 已有的解决方案是在脚本中添加

SWTBOK测试实践系列(1) -- 测试在项目前期的评审投入划算吗?

测试策略:静态测试还是动态测试? [对话场景] 成功发布某个软件版本之后,项目团队召开了项目的经验教训总结大会.在会议期间,项目经理小项和测试经理小测进行了如下的对话: 小项:"小测,我们的项目时间压力很大,测试执行是我们的关键路径,测试团队是否可以在测试执行阶段投入更多的人力和物力?"限定时间和人力资源同等条件. 小测:"啊!假如增加我们的测试执行时间,在整个周期不变的情况下,我们就需要压缩前期的学习和评审投入的时间和工作量,是吗?" 小项:"是的,你看

算法时间测试

1 //算法时间测试 基准法(定量分析) 大O法(定性分析) 2 //以下是基准法 3 #include "iostream" 4 #include "cstdio" 5 #include "ctime" 6 #include "windows.h" 7 using namespace std; 8 int main() 9 { 10 //法一 11 clock_t start1,end1;//clock_t 需头文件#inc

对象初始化器测试

/// <summary>     /// 对象初始化器测试     /// </summary>     public class Initializer     {         //测试对象初始化器         public static void Test1()         {             Student stu1 = new Student() { name = "zhangsan", age = 18 };           

html5初始化时间控件

HTML5提供了一系列时间控件date.time.datetime-local.datetime.month.week ,但是都没有进行控件的初始化. 现在以最常使用的date.time控件为例,进行时间控件的初始化. <!doctype html> <html> <head>     <meta charset="UTF-8"> <title>初始化时间控件</title> </head> <b

接口自动化测试系列之PHPUnit-接口测试的步骤

接着上篇文章接口自动化测试系列之PHPUnit-接口测试基础继续来说 接口测试的步骤 接口测试的步骤并没有什么特殊的,但其中比较关键的是阅读接口文档.这里有个特别奇怪的现象,我们作为测试每天都在读各种复杂.不靠谱的需求,而且还是较好的完成测试工作.但为什么读起来一个非常好的文档的时候却不知道该怎么看了呢?实在想不明白!比如,给了你一份非常详细的学习文档了,或者搭建环境的文档亦或API的文档,很多人都不想看,甚至拒绝看!那怎么会做好测试呢?尤其是想做到高端点的.这个习惯要改改啊亲们! 好,回归正题

测试-一个unity的编译bug,初始化器

.net C#下测试: public class Class1 { public bool toggle1 = true; public bool toggle2; } 一个结构类Class1,对里面两个成员通过初始化器执行初始化.在原生C#里测试,结果是正常的 unity的mono下测试: 在unity下测试,结果居然被覆盖了? 今天就被坑了..没想到居然是unity的问题

C#下的时间测试(用于计算方法执行时间)

1 public class Timing 2 { 3 private TimeSpan m_StartTime; 4 5 private TimeSpan duringTime; 6 7 public Timing() //构造函数用于初始化开始时间和持续时间 8 { 9 this.m_StartTime = new TimeSpan(0); //初始化的时候设置时间为00:00:00 10 this.duringTime = new TimeSpan(0); 11 } 12 13 publi

Unity Animator动画状态机 深入理解(一)

接触Unity以来就已经有了Animator,Animation用的少,不过也大概理解他俩之间的一个区别于联系. 图中其实就是Animator和Animation之间的区别于联系了,啊!你肯定会告诉我这就不是Animator么. 对啊,Animator其实是由Animation组成的.比如在Animator没有出现的时候有些公司写的动画状态机其实就是代码版的Animator. Animator其实就是把Animation统一管理和逻辑状态管理的组件,而Animation就是每一个动画. 动画状态