繁体   English   中英

尝试在iOS模拟器上运行Unity游戏时使用EXC_BAD_ACCESS

[英]EXC_BAD_ACCESS when trying to run Unity game on iOS simulator

我通常不是Mac / Xcode用户,请原谅我不正确的术语或理解。

我有一个2D Unity游戏,可以在Android和Windows Phone设备/模拟器上成功构建并运行。 在为iOS构建时,我可以成功创建Xcode项目,将其打开并在其中构建应用程序。 我对iOS特定的播放器设置所做的唯一更改是将SDK Version设置为Simulator SDK

但是,当尝试在模拟器中运行它时,将显示初始屏幕,然后Xcode停在看起来像Assemby文件的错误消息上: Thread 1: EXC_BAD_ACCESS (code=1, address=0x4)

由于我不知道要做什么,所以我开始精简我的项目(在Unity中),直到没有更多gameObjects了,但镜头仍留在了开始场景中。 另外,我从构建中删除了所有其他场景。 唯一改变的是上面的错误消息现在似乎出现在另一个程序集文件上。

最新错误讯息

这里可能是什么问题? 我应该如何进一步调查?

更新

这是堆栈跟踪: 堆栈跟踪

更新2

我创建了一个新的空白Unity项目,并且在那里出现了完全相同的错误。 问题似乎与Unity或我的机器有关,而不是与应用程序本身有关。

解决方法

经过数天的研究,我仍然无法解决问题,最终还是为真正的设备而不是模拟器而构建。 由于我不拥有该产品,因此我“盲目”将结果提交给了应用商店,结果被接受了。

对我而言,这就是问题完全与Unity和iOS模拟器的组合有关的证明,即这两者不能可靠地协同工作。

另一方面,假设某个应用程序已在Android,Windows Phone和默认播放器上成功测试过,则认为该应用程序可在iOS上运行似乎相对安全。 当然,除非实现了iOS特定功能。

我只知道导致这种现象的一个原因(设备构建成功,但模拟器构建不成功)。

=>使用本机iOS代码/插件时可能会发生这种情况

要解决此问题,您必须修改<path-to-xcode-project>/Libraries/RegisterMonoModules.cpp文件,导致Unity无法以某种方式为模拟器注册这些类/方法。

只需查找#if !(TARGET_IPHONE_SIMULATOR)定义并转移它们,使其包含所有插件,同样也包含在模拟器中。 您将需要一些move mono_dl_register_symbol()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM