gpt4 book ai didi

c# - Unity Application.LoadLevel 卡住安卓设备上的游戏

转载 作者:太空宇宙 更新时间:2023-11-03 15:34:41 24 4
gpt4 key购买 nike

我正在使用 Unity 开发游戏。游戏只有一个关卡,在玩家获胜/失败后,我只想重新加载相同的场景。这是我正在使用的代码:

private void OnLevelFailed()
{
IsGameStarted = false;
Debug.Log("LEVEL FAILED");
Invoke("RestartLevel",5);
}

void RestartLevel()
{
Application.LoadLevel(Application.loadedLevelName);
}

在编辑器上运行这段代码时,一切似乎都很好,场景会按预期重新加载。但是,当我为 Android 构建游戏并在设备(LG G3)上运行时,游戏只是卡住。我使用 adb logcat 查看任何异常或错误的日志(如果有的话),但没有成功。我还怀疑 Invoke 调用是否导致了问题,并将其替换为简单的方法调用,但这也没有解决问题。

有人知道为什么会发生这种情况吗?

编辑:问题似乎是由我正在使用的预制件引起的,即 ALPSVR .它是一个虚拟现实 SDK,允许您拥有独立于 Unity 自己的 VR 实现的 VR 相机(它支持一些 VR 设备和 GearVR,但不支持常规的 Android 设备)。

我尝试在重新加载之前从场景中销毁 VR 摄像机,但同样没有解决问题。为什么场景中的某个游戏对象会阻止 Application.LoadLevel 正常工作?

最佳答案

您可能会成功使用 Application.LoadLevelAsync(Application.loadedLevelName);

如果这不起作用,请考虑创建第二个空白场景。当您的游戏关卡完成时,调用 Application.LoadLevel(Application.blankScene);,然后在该空白场景中的 GameObject 上执行此脚本:

public class LevelLoader : MonoBehaviour
{
void Start()
{
StartCoroutine(ReloadLevel());
}

IEnumerator ReloadLevel()
{
yield return Resources.UnloadUnusedAssets();
Application.LoadLevel(Application.loadedLevelName);
}

关于c# - Unity Application.LoadLevel 卡住安卓设备上的游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32212401/

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