在不使用 UnityEditor 相关包的情况下,可以通过以下代码获取 animatorOverrideController 中的子状态机列表:

AnimatorOverrideController overrideController = GetComponent<AnimatorOverrideController>();
RuntimeAnimatorController runtimeController = overrideController.runtimeAnimatorController;

AnimatorController animatorController = runtimeController as AnimatorController;
if (animatorController != null)
{
    List<AnimatorStateMachine> stateMachines = new List<AnimatorStateMachine>();

    foreach (ChildAnimatorState state in animatorController.layers[0].stateMachine.states)
    {
        AnimatorStateMachine stateMachine = state.state.machine;
        if (stateMachine != null)
        {
            stateMachines.Add(stateMachine);
        }
    }

    // 使用 stateMachines 列表
}

这段代码首先获取了 animatorOverrideController 所使用的 runtimeAnimatorController,然后将其转换为 AnimatorController 类型。接着,遍历 AnimatorController 中的第一个 Layer 中所有的 ChildAnimatorState,获取其对应的状态机,并将其添加到 stateMachines 列表中。最后,你可以在代码中使用 stateMachines 列表中的元素来获取 animatorOverrideController 中的子状态机列表。

Unity: 获取 AnimatorOverrideController 子状态机列表 (无需 UnityEditor)

原文地址: https://www.cveoy.top/t/topic/nm3J 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录