C# 重新加载场景时忽略OnMouseDown

C# 重新加载场景时忽略OnMouseDown,c#,unity3d,C#,Unity3d,我有一个场景,整个屏幕上都有一个透明的按钮。该按钮用作多用途按钮,当游戏正在进行时,可使玩家跳跃。但是,如果游戏结束并单击按钮,场景将重新加载 这个按钮有一个事件触发器:指针向下,它调用下面显示的“操作”函数 void Action() { if (game_isOver) { SceneManager.Loadscene(SceneManager.GetActiveScene().name); } else { Jump(); } }

我有一个场景,整个屏幕上都有一个透明的按钮。该按钮用作多用途按钮,当游戏正在进行时,可使玩家跳跃。但是,如果游戏结束并单击按钮,场景将重新加载

这个按钮有一个事件触发器:指针向下,它调用下面显示的“操作”函数

void Action() {
    if (game_isOver) {
        SceneManager.Loadscene(SceneManager.GetActiveScene().name);
    } else {
        Jump();
    }
}
问题是,一旦加载场景,按钮就会检测到按下并再次调用
Action()
。而且它太快了,不能通过快速按下按钮来避免


避免这种情况的最佳方法是什么。我并不特别希望延迟用户完成单击的时间,因为我希望他们能够双击以快速进入游戏。

我建议使用协同程序功能LoadSceneAsync加载可以处理加载情况的场景

bool isLoading;

void Action() {
    if (game_isOver) {
        if(!isLoading){
            StartCoroutine(LoadNewScene());
        }
    } else {
        Jump();
    }
}

IEnumerator LoadNewScene() {

    AsyncOperation asyncOperation = SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().name);
    while (!asyncOperation.isDone)
    {
        isLoading = true;
        Debug.Log("Loading progress: " + asyncOperation.progress);
        yield return null;
    }  
}

嗨,这个代码不起作用。你打算在任何地方开始合作吗?