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

时间:2015-03-30 20:42:10

标签: ios xcode unity3d

我通常不是Mac / Xcode用户,请原谅我错误的条款或理解。

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

但是,当尝试在模拟器中运行它时,会出现启动画面,然后Xcode会暂停一些看起来像装配文件的内容,并显示错误消息:Thread 1: EXC_BAD_ACCESS (code=1, address=0x4)

由于我不知道该怎么做,我开始剥离我的项目(在Unity中)直到我没有更多的游戏对象,但相机离开了开始场景。此外,我从构建中删除了所有其他场景。唯一改变的是上面的错误消息现在似乎出现在另一个程序集文件中。

Latest error message

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

更新

这是堆栈跟踪: Stack trace

更新2

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

解决方法

经过几天的研究,我仍然无法解决问题,最终建立了真正的设备,而不是模拟器。由于我不拥有一个,我盲目地"将结果提交到应用程序商店,它已被接受。

对我而言,这证明该问题仅与Unity和iOS模拟器的组合有关,即这两者无法可靠地协同工作。

另一方面,如果应用程序在Android,Windows Phone和默认播放器上成功测试过,那么在iOS上运行它似乎相对安全。当然,除非实现特定于iOS的功能。

1 个答案:

答案 0 :(得分:0)

我只知道一个原因,导致这种行为(设备构建工作,但模拟器构建不会)。

=>使用本机iOS代码/插件

时,可能会发生这种情况

要解决这个问题,你必须修改<path-to-xcode-project>/Libraries/RegisterMonoModules.cpp文件,因为Unity不会为模拟器注册那些类/方法。

只需查看#if !(TARGET_IPHONE_SIMULATOR)定义并将它们移动到包含所有插件,也可以在模拟器中。您将需要一些move mono_dl_register_symbol()