我正在尝试使“再试一次”按钮与面板动画一起工作,该面板动画在重新加载游戏场景之前应该从透明变成深黑色。但是由于某种原因,动画既没有运行,也没有加载场景线。我发现它很奇怪。
起初,我以为该面板阻止了我单击该按钮,因此我将其设置为默认状态为非活动状态,并通过脚本将其激活。 我认为我已经正确设置了引用,一个用于面板动画设计器,一个用于面板本身(将其设置为活动状态),一个用于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”所代表的声音。没有面板,没有场景重启,尽管在检查器中面板显示为“活动”和全黑。 再次感谢您的回复!
答案 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。