[英]Using IEnumerator for Onclick function in a Button, but scenemanager doesnt work
我目前正在为我的 Unity 游戏创建交叉渐变 animation。 在我的暂停菜单中,通过单击菜单按钮淡入黑屏。 当我这样做时,菜单按钮不会 go 到菜单场景。 这是我的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Pause : MonoBehaviour
{
public GameObject PauseMenuUI;
bool isPaused = false;
public GameObject PauseMenu;
public GameObject OptionsMenu;
public Animator Transition;
public int TransitionTime = 1;
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
// Open or close the pause menu
if (!isPaused)
{
OpenPauseMenu();
}
else if (isPaused)
{
Resume();
}
}
}
// Main Menu
void OpenPauseMenu()
{
PauseMenuUI.SetActive(true);
Time.timeScale = 0f;
isPaused = true;
}
public void Resume()
{
Back();
PauseMenuUI.SetActive(false);
Time.timeScale = 1f;
isPaused = false;
}
public void Options()
{
PauseMenu.SetActive(false);
OptionsMenu.SetActive(true);
}
public void Menu()
{
Resume();
Crossfade();
}
// Options Menu
public void Back()
{
OptionsMenu.SetActive(false);
PauseMenu.SetActive(true);
}
// Crossfade
IEnumerator Crossfade()
{
Transition.SetTrigger("Start");
yield return new WaitForSeconds(TransitionTime);
SceneManager.LoadScene("Menu");
}
}
返回IEnumerators
的方法并不神奇。 它们可以用来描述一个协程,但是如果你想做某事,你需要启动那个协程。 如果你像普通方法一样调用这样的方法,它会一直执行到第一个yield return
语句,然后什么都不会发生。
将枚举器传递给StartCoroutine
执行方法的rest:
StartCoroutine(Crossfade());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.