结果有点出乎意料。
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之前:
时间: 2025-01-02 06:06:02