Unity Animation Event-未选择功能

时间:2019-06-04 08:42:06

标签: c# unity3d animation events

我在Google上搜索并尝试了很多,现在就发疯了,这只是一件简单的事情,需要花费很多时间才能解决。 因此,在网络上有两种类型的帖子:

  1. 控制台出现错误“未选择功能”,解决方案是偶然地添加了一些动画事件并没有对其进行设置。 <-这不是我正在寻找的
  2. 我在剪辑中添加了一个动画事件,但是单击下拉菜单中的“功能”时会显示“未选择功能”,并且不允许我进行任何选择。 <-这是我正在寻找的东西。这种帖子从未得到答案。

外观如下enter image description here

层次结构:

对象1
 对象1.1 <-有一个脚本,我可以从该脚本开始动画
 对象1.2 <-具有动画制作器。旋转和缩放对象1.2

更多信息: 是的,我首先选择了对象1.2,然后选择了“动画”窗口中的右侧剪辑,并添加了动画事件。

1 个答案:

答案 0 :(得分:2)

  

这类帖子从未得到答案

请允许我对此表示怀疑。


只需确保您的设置满足以下条件:

AnimationEvent要求

  • 要从中使用方法的组件与GameObject 组件附加到Animator相同
  • 您要调用的方法具有可访问性,并且返回类型为public void
  • 您要调用的方法没有一个或最多一个参数
  • 该参数支持的类型为intfloatstringboolUnityEngine.Object

由于您的脚本位于另一个GameObject上,因此您可以重定向调用,例如喜欢

public Redirector : MonoBehaviour
{
    // Either drag in via Inspector
    [SerializeField] private ScriptOnOtherObject _scriptOnOtherObject;

    // or get at runtime if you are always sure about the hierachy
    private void Awake()
    {
        _scriptOnOtherObject = transform.parent.GetComponent<ScriptOnOtherObject>();
    }

    // and now call this from the AnimationEvent
    public void DoIt()
    {
        _scriptOnOtherObject.TheMethodToCall();
    }
}