Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity Android构建-更改场景时出错_Android_Unity3d_Build_Apk_Scene Manager - Fatal编程技术网

Unity Android构建-更改场景时出错

Unity Android构建-更改场景时出错,android,unity3d,build,apk,scene-manager,Android,Unity3d,Build,Apk,Scene Manager,我面临一个相当奇怪的问题,我使用的是unity 2017.3.1f1个人版 当我构建APK并将该文件复制到手机上,然后从手机的文件管理器安装时,我无法从主菜单切换到第一个场景,游戏在加载场景中崩溃,或者在选择后冻结,认为这是由于异步代码,所以我尝试不使用它,根本没有结果 当我选择Build and Run(构建并运行)时,这根本不会发生,并且应用程序正常运行,我在这里遗漏了什么,或者我如何修复它?已经多次重启unity和计算机 下面是我用来在场景之间切换的代码,包括没有异步模式的代码: pub

我面临一个相当奇怪的问题,我使用的是unity 2017.3.1f1个人版

当我构建APK并将该文件复制到手机上,然后从手机的文件管理器安装时,我无法从主菜单切换到第一个场景,游戏在加载场景中崩溃,或者在选择后冻结,认为这是由于异步代码,所以我尝试不使用它,根本没有结果

当我选择Build and Run(构建并运行)时,这根本不会发生,并且应用程序正常运行,我在这里遗漏了什么,或者我如何修复它?已经多次重启unity和计算机

下面是我用来在场景之间切换的代码,包括没有异步模式的代码:

 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之外修改它们是否困难。交叉检查您是否已添加所有场景在构建中使用