Unity: 获取 AnimatorOverrideController 子状态机列表 (无需 UnityEditor)
在不使用 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 中的子状态机列表。
原文地址: https://www.cveoy.top/t/topic/nm3J 著作权归作者所有。请勿转载和采集!