Unity 获取 AnimatorOverrideController 子状态机列表 - 代码示例
在不使用 UnityEditor 的情况下,可以使用以下代码获取 AnimatorOverrideController 中的子状态机列表:
AnimatorOverrideController overrideController = GetComponent<AnimatorOverrideController>();
List<AnimatorStateMachine> stateMachines = new List<AnimatorStateMachine>();
foreach (AnimationClipPair clipPair in overrideController.clips)
{
if (clipPair.overrideClip != null)
{
// 从覆盖剪辑获取状态机
AnimatorStateMachine stateMachine = clipPair.overrideClip.GetStateMachine();
// 如果状态机尚未添加到列表中,则将其添加到列表中
if (!stateMachines.Contains(stateMachine))
{
stateMachines.Add(stateMachine);
}
}
}
// stateMachines 列表现在包含 `AnimatorOverrideController` 中的所有子状态机。
这个代码段首先获取 AnimatorOverrideController 组件,然后遍历所有的动画剪辑对。对于每个动画剪辑对,它会检查覆盖剪辑是否存在,并从中获取状态机。最后,它将所有状态机添加到一个列表中,这样就可以访问它们了。
原文地址: https://www.cveoy.top/t/topic/nm2Y 著作权归作者所有。请勿转载和采集!