首页 > 解决方案 > 是否可以导航动画控制器的图形?

问题描述

是否可以在运行时通过代码在 Unity 中导航由 Animator Controller 表示的图形?

设置
例如,如果我有两个状态“空闲”和“单击”。为了从“空闲”状态转换到“点击”状态,我必须在动画师上发出 SetTrigger(“Clicked”) 调用,然后开始播放“SwiperItemClicked”动画剪辑。

在此处输入图像描述

现在问题
当我知道触发器的名称(“单击”)时,我如何以编程方式找出在达到“单击”状态后将播放什么动画剪辑?我需要知道处于“已单击”状态的动画剪辑的名称(在本例中为“SwiperItemClicked”)。

我正在使用 Unity 2018.3.0f2。

标签: unity3d

解决方案


仅适用于编辑器脚本

public static string FindClipName(AnimatorController controller, string triggerName)
{
    foreach (var layer in controller.layers)
        foreach (var state in layer.stateMachine.states)
            foreach (var transition in state.state.transitions)
                foreach (var condition in transition.conditions)
                    if (condition.parameter == triggerName)
                        return transition.destinationState.motion.name;
    return null;
}

推荐阅读