我有一个场景,整个屏幕上都有一个透明的按钮。该按钮用作多用途按钮,如果游戏在进行中,可使玩家跳转。但是,如果游戏结束并且单击了按钮,则场景将重新加载。
此按钮具有事件触发器:按下指针后,将调用以下所示的“动作”功能。
void Action() {
if (game_isOver) {
SceneManager.Loadscene(SceneManager.GetActiveScene().name);
} else {
Jump();
}
}
问题在于,场景加载后,按钮会立即检测到按下并再次调用Action()
。太快了,无法避免快速按下按钮。
避免这种情况的最佳方法是什么。我特别不想让用户有时间完成点击,因为我希望他们能够双击以快速进入游戏。
答案 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;
}
}