重新加载场景时忽略OnMouseDown

时间:2018-09-05 02:53:17

标签: c# unity3d

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

此按钮具有事件触发器:按下指针后,将调用以下所示的“动作”功能。

void Action() {
    if (game_isOver) {
        SceneManager.Loadscene(SceneManager.GetActiveScene().name);
    } else {
        Jump();
    }
}

问题在于,场景加载后,按钮会立即检测到按下并再次调用Action()。太快了,无法避免快速按下按钮。

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

1 个答案:

答案 0 :(得分:0)

我建议使用协程函数 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;
    }  
}