【问题标题】:Bool parameter won't change through script, animation wont play OnClickBool 参数不会通过脚本改变,动画不会播放 OnClick
【发布时间】:2019-05-13 15:46:21
【问题描述】:

我正在做一个 android 2d 平台游戏。在 Animator 中,一切都设置好了。在应用程序开始时一切正常,但是当我单击按钮时,布尔参数不会改变,所以我的动画不会向后播放。但是当我在动画器中勾选 bool 参数时,动画会正常播放。没有控制台错误。这是我的脚本。

我正在使用这个tutorial,我只需要第一部分(“开始游戏”动画部分)。我跟着每一步。可能我错过了什么。

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine.UI;
using UnityEngine;

public class UIManager : MonoBehaviour
{
    public Animator optionsButton;

    public void OpenSettings()
    {
        optionsButton.SetBool("isHidden", false);
    }
}

我的目标是在按下选项按钮时向后播放动画,并且我想通过脚本更改 bool 参数。

【问题讨论】:

  • 是否调用了OpenSettins() 方法?向它添加调试消息,以确保在单击按钮时调用它。我这样说是因为您可能没有在编辑器中分配按钮 onClick 方法。
  • 我使用了 Debug.Log(Button Clicked);但同样的事情发生了;当我单击按钮时,参数不会更改,但调试消息会写入控制台。我希望至少有一条错误消息,但没有。
  • 检查 animator 不为 null 并且 bool 参数的拼写是否正确,因为代码没有任何问题。
  • 你能告诉我如何检查动画师不为空吗?好吧,我们可以同意这一点,因为我寻找了解决方案,但找不到任何东西。太奇怪了。正如我在互联网上查看的那样,可能是动画师中的一个状态是默认状态的副本的问题?发现了某种遗留问题和根本问题,但没有一个有效。我有一种感觉,这将是一个错误或非常简单的事情。我投票给第二个:D
  • 您可以使用普通的animator == null 来检查它是否为空。我开始认为您的 Animator 中有单个剪辑,并且当您开始游戏/场景然后结束时它正在运行动画。如果是这样,您需要使用options.Play("nameofnanimation") 重新启动它,也请查看CrossFade

标签: c# unity3d


【解决方案1】:

问题在于脚本试图更改画布子元素对象上的布尔值。而且没有布尔值。所以我改变了现有的脚本来获取它。完美运行。

public class UIManager : MonoBehaviour
{

    public Animator optionsButton;
    public bool hide;

  private void Start()
   {
       //to find the parent element - canvas - which has a bool
       optionsButton = GameObject.Find("MainMenu").GetComponent<Animator>();
   }

    public void OpenSettings()
    {
        hide = true;
        optionsButton.SetBool("AnimOut", hide);

        Debug.Log("I'm finaly working!");
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-16
    • 2020-05-06
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多