Unity Android构建-更改场景时出错
我面临一个相当奇怪的问题,我使用的是unity 2017.3.1f1个人版 当我构建APK并将该文件复制到手机上,然后从手机的文件管理器安装时,我无法从主菜单切换到第一个场景,游戏在加载场景中崩溃,或者在选择后冻结,认为这是由于异步代码,所以我尝试不使用它,根本没有结果 当我选择Build and Run(构建并运行)时,这根本不会发生,并且应用程序正常运行,我在这里遗漏了什么,或者我如何修复它?已经多次重启unity和计算机 下面是我用来在场景之间切换的代码,包括没有异步模式的代码:Unity Android构建-更改场景时出错,android,unity3d,build,apk,scene-manager,Android,Unity3d,Build,Apk,Scene Manager,我面临一个相当奇怪的问题,我使用的是unity 2017.3.1f1个人版 当我构建APK并将该文件复制到手机上,然后从手机的文件管理器安装时,我无法从主菜单切换到第一个场景,游戏在加载场景中崩溃,或者在选择后冻结,认为这是由于异步代码,所以我尝试不使用它,根本没有结果 当我选择Build and Run(构建并运行)时,这根本不会发生,并且应用程序正常运行,我在这里遗漏了什么,或者我如何修复它?已经多次重启unity和计算机 下面是我用来在场景之间切换的代码,包括没有异步模式的代码: pub
public void Car1()
{
selectedCar = 0;
canvasManagerGO.GetComponent<CanvasManager>().Close();
SceneManager.LoadScene("W" + selectedWorld + "-L1", LoadSceneMode.Single);
}
public void Car2()
{
selectedCar = 1;
canvasManagerGO.GetComponent<CanvasManager>().Close();
SceneManager.LoadScene(1, LoadSceneMode.Single);
}
public void Car3()
{
selectedCar = 2;
canvasManagerGO.GetComponent<CanvasManager>().Close();
StartCoroutine(ChangeScene("W" + selectedWorld + "-L1"));
public IEnumerator ChangeScene(string sceneName)
{
loadingCanvas.SetActive(true);
AsyncOperation asyncOperation = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Single);
while (!asyncOperation.isDone)
{
float progress = Mathf.Clamp01(asyncOperation.progress / .9f);
//Debug.Log(asyncOperation.progress);
slider.value = progress;
yield return null;
}
yield return null;
}
public void Car1()
{
selectedCar=0;
canvasManagerGO.GetComponent().Close();
SceneManager.LoadScene(“W”+selectedWorld+“-L1”,LoadSceneMode.Single);
}
公共图书馆2(
{
所选汽车=1;
canvasManagerGO.GetComponent().Close();
SceneManager.LoadScene(1,LoadSceneMode.Single);
}
公共图书馆3(
{
选择的CAR=2;
canvasManagerGO.GetComponent().Close();
开始例行程序(更改场景(“W”+选定世界+“-L1”);
公共IEnumerator变更场景(字符串场景名称)
{
loadingCanvas.SetActive(true);
AsyncOperation AsyncOperation=SceneManager.LoadSceneAsync(sceneName,LoadSceneMode.Single);
而(!asyncOperation.isDone)
{
float progress=Mathf.Clamp01(asyncOperation.progress/.9f);
//Debug.Log(asyncOperation.progress);
slider.value=进度;
收益返回空;
}
收益返回空;
}
车1和车2有一个直接模式,没有使用协同程序来更改场景,它们都不工作,代码没有任何错误,或者至少控制台没有报告任何内容,我还尝试了不同的构建设置和压缩,也有或没有开发构建来检查探查器,什么都没有,谢谢大家:)I一个ADB调试器没有发现任何东西,应用程序只显示了一个空行,它就死了,我甚至把Lunar控制台放在我的项目上,看到unity没有显示的错误是一个很大的帮助,但也没有太大的帮助 我在这个视频中找到了解决方案
我遵循了他使用的“玩家设置->其他设置”的确切设置,显然至少目前它解决了问题,但无法指出是哪个设置导致了这种行为你正在构建的设备是什么?还有你的脚本运行时版本是什么?(编辑>项目设置>玩家>其他设置)。如果这是实验性的4.6版本,请尝试切换回3.5版本。在构建oneplus和某些三星手机时,这对我来说是一个问题,类似的情况也发生了。您是否尝试过使用adb调试以查看是否存在任何运行时错误?嗯,我安装的手机是阿尔卡特5054型s(Pop3)在android 5.1.1中,脚本运行时是稳定的(.NET 3.5等价物),不,我还没有尝试过adb调试,我还不知道如何使用它:(根据您的经验,我应该在这个调试器中寻找什么?您可以使用它读取任何错误Unity Spit(非常类似于Unity内部连接的播放器)但除此之外,您还可以使用它读取Unity之外发生的任何错误(例如,由操作系统引起的错误)如果它是操作系统错误,它是可修复的吗?我在这里想,但如果它不是unity的问题或错误,那么什么更容易修复?可能是切换unity版本?我不知道这些版本与某些手机或类似产品不兼容,所以我无法想象在unity之外修改它们是否困难。交叉检查您是否已添加所有场景在构建中使用