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;
}
}
嗨,这个代码不起作用。你打算在任何地方开始合作吗?