gpt4 book ai didi

android - Unity - 使用 Android 设备后退按钮返回上一个场景

转载 作者:行者123 更新时间:2023-11-29 15:34:38 24 4
gpt4 key购买 nike

在 Unity 中,我设法通过单击 Device Android 后退按钮返回到最后一个场景,但问题是当我在第 3 个场景中并且我想返回到第 2 个场景,然后再回到第一个场景。

从第 3 个场景到第 2 个场景,当我点击后退按钮时,它成功运行,但是当我从第 2 个场景再次按下后退按钮到第 1 个场景时,它没有运行。后退按钮似乎只在第一次起作用。

这是我的 C# 代码:

public class SceneLoader : MonoBehaviour
{
private float seconds = 0.5f;
private static int lastScene;
private int currentScene;

private void Awake()
{
currentScene = SceneManager.GetActiveScene().buildIndex;
}

private void Update()
{
BackButtonPressed();
}

public void LoadNextScene(int numberOfSceneToLoad)
{
StartCoroutine(LoadScene(numberOfSceneToLoad));
}

private IEnumerator LoadScene(int numberOfScene)
{
currentScene = SceneManager.GetActiveScene().buildIndex;
SetLastScene(currentScene);

yield return new WaitForSeconds(seconds);
SceneManager.LoadScene(numberOfScene);

}


private void BackButtonPressed()
{
if (Input.GetKey(KeyCode.Escape))
{
Debug.Log("Current scene: " + currentScene);
Debug.Log("Last Scene (scene to load): " + GetLastScene());

SceneManager.LoadScene(GetLastScene());

currentScene = GetLastScene();
Debug.Log("Now the Current scene is: " + currentScene);
}
}


public static void SetLastScene(int currentSceneToLastScene)
{
lastScene = currentSceneToLastScene;
}

public static int GetLastScene()
{
return lastScene;
}

public void QuitGame()
{
Application.Quit();
}

}

提前致谢。

最佳答案

当您返回 BackToLastScene 时,您设置了 currentScene = GetLastScene(); 但永远不要更改 lastScene 值。

我建议您使用某种后进先出数据结构,例如 System.Collections 中的 Stack 来跟踪场景。

这是一个示例伪代码:

define scene_stack;
function LoadNewScene(new_scene){
current_scene = GetCurrentScene();
scene_stack.Push(current_scene);
LoadScene(new_scene);
}

function LoadOldScene(){
old_scene = scene_stack.Pop();
LoadScene(old_scene);
}

关于android - Unity - 使用 Android 设备后退按钮返回上一个场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53541667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com