单击UI按钮无法使面板动画生效

时间:2019-09-10 14:45:07

标签: unity3d

我正在尝试使“再试一次”按钮与面板动画一起工作,该面板动画在重新加载游戏场景之前应该从透明变成深黑色。但是由于某种原因,动画既没有运行,也没有加载场景线。我发现它很奇怪。

起初,我以为该面板阻止了我单击该按钮,因此我将其设置为默认状态为非活动状态,并通过脚本将其激活。 我认为我已经正确设置了引用,一个用于面板动画设计器,一个用于面板本身(将其设置为活动状态),一个用于tryagain按钮的“ OnClick”部分,并在检查器中分配了正确的功能。 / p>

public class Tryagainscript : MonoBehaviour
{
    public Animator tryagain;
    public AudioSource audios;
    public AudioClip tsu;
    public GameObject panel;

    IEnumerator TryCo()
    {

        tryagain.SetInteger("try", 1);

        yield return new WaitForSeconds(1.2f);
        SceneManager.LoadScene("Game");
    }

    public void Trybutton()
    {
        StartCoroutine(PanelCo());
    }

    IEnumerator PanelCo()
    {
        panel.SetActive(true);
        audios.PlayOneShot(tsu);
        yield return new WaitForSeconds(0.1f);
        StartCoroutine(TryCo());
    }
}

变量的名称可能令人困惑,但是您明白了。 这是我分配给TryAgain按钮以运行“ Trybutton()”函数的脚本,因此它一次运行两个协程。整数“ try”是指面板中的动画制作者将其变为黑色。 就像我说的那样,这段代码没有任何作用:面板不会变黑,游戏也不会重新加载。 预先感谢!

编辑: 我已将代码更改为更简单的内容:

  public void Trybutton()
    {
        StartCoroutine(PanelCo());
    }

    IEnumerator PanelCo()
    {

        audios.PlayOneShot(tsu);
        panel.SetActive(true);
        yield return new WaitForSeconds(1.2f);
        SceneManager.LoadScene("Game");

    }

我没有更改动画状态,而是将所需的状态设置为默认状态,而只是将面板设置为活动状态。 奇怪的是(因为我不了解),TryAgain按钮属于GameOver菜单面板。当游戏在此GameOver面板处于活动状态时开始(但不褪色为黑色)时,脚本运行良好。另一方面,当我玩游戏且故意失球时,弹出菜单菜单,我按下TryAgain按钮,它所做的只是在“ waitforseconds()”之前播放“ tsu”所代表的声音。没有面板,没有场景重启,尽管在检查器中面板显示为“活动”和全黑。 再次感谢您的回复!

2 个答案:

答案 0 :(得分:1)

所以,我现在有点傻。我发现玩家死后面板动画没有播放,所以我对其进行了调查。我记得当时我将玩家死后将timeScale设置为0f。这就是为什么衰落面板没有设置动画并且场景没有重新开始的原因。 我之前没有考虑过这一点,因为我不知道如果将timeScale设置为0f,则无法加载场景。 再次感谢您的时间,关注和解答! 我还是这个新手。

答案 1 :(得分:0)

这是在Unity中使用协程的标准方法(淡出示例):

IEnumerator Fade() 
{
    for (float ft = 1f; ft >= 0; ft -= 0.1f) 
    {
        Color c = renderer.material.color;
        c.a = ft;
        renderer.material.color = c;
        yield return new WaitForSeconds(.1f);
    }
}

不要尝试重新发明轮子,这是进行淡入淡出的标准方法(我认为您需要淡入淡出)。在这里,它的alpha值更改(c.a)每0.1秒降低0.1。

来源:https://docs.unity3d.com/Manual/Coroutines.html