【问题标题】:Android - Unity3D freeze in splash screen on some phonesAndroid - Unity3D 在某些手机的启动画面中冻结
【发布时间】:2015-06-15 21:56:41
【问题描述】:

Unity3D 有问题。我用 Unity 4.6.2f1 创建了一个游戏。我的问题是,启动画面后游戏崩溃(就像试图不断打开自己一样)。奇怪的是,游戏完美地在我的手机和平板电脑上运行。我有 Nexus 5(Android 5.1.1)、Iocean X7S(Android 4.2.2)、PolyPad 平板电脑(Android 4.2.2)、台电 X98(Android 4.4.4)。我有一些 LG G2、Samsung S5660、Sony Xperia Z3、HTC M8 的 beta 测试人员。从这 4 款手机中,只有三星可以运行,而其他手机则失败。我首先认为这是因为显示位。所以我取消选中 32 位和 24 位显示缓冲区。结果相同。然后我尝试更改强制 Open GL ES 版本。我尝试使用“自动”部分构建它 - 我不知道它是否失败,但即使在我的设备中一段时间​​后它也开始变黑,所以我想这不是修复的选项。然后我试图强迫它使用 Open GL ES 3.0 ,再次失败。然后我在某处读到我的 AdMob 插件可能是原因,所以我从场景中删除了 AdMob 的组件并删除了所有 AdMob 插件文件。结果相同。由于崩溃的手机不在我的控制之下,很难轻易发现真正的问题,因为我真的需要每次测试都向我的朋友乞求,因为我的测试人员是我的朋友,他们有自己的个人生活,据他们说更重要比整天测试我的游戏。顺便说一句,我也想添加这个,就像一个月前一样,一切都很好。它在我朋友的手机上运行正常(有 G2 的那个)。我对签署apk感到怀疑。因为在签名之前,当我在没有签名的情况下发送它时,它正在工作。当然,这可能是错误的想法。我不是专家,所以我在这里寻求您的帮助。我真的很想知道为什么会这样,我想解决这个问题。谢谢!

【问题讨论】:

  • 如果您从冻结的手机中发布一些错误 logcat,也许我们可以提供帮助。
  • 这里,imgur.com/MvmLiOQ。这是来自 LG G2 (5.1.0),谢谢
  • 您是否在游戏中使用任何插件或第三方库?
  • 我用的是 AdMob 插件,一开始我以为是这个问题,但是这个 logcat 属于一个没有插件的版本。
  • 尝试通过从游戏中删除逐步的资产和功能来缩小问题范围,这样最终你会得到一个空场景,并回到旧的统一没有出现问题的版本。

标签: android unity3d screen freeze splash-screen


【解决方案1】:

好的,我找到了解决方案。事实证明,我的一个脚本是造成这个问题的原因。所以我删除了它并重写了另一个做同样工作的脚本。我假设,脚本试图一遍又一遍地使用 RAM,因此,Adreno 330 类型的处理器试图阻止应用程序的 Open GL 以防止手机完全崩溃。这当然只是假设。但是,如果您遇到像我一样的问题,尤其是在 Adreno 330 处理器中,请先尝试检查您的代码是否有任何过载。

【讨论】:

  • 您介意比“反复使用 RAM”更具体吗?有人可能会偶然发现这个线程,并且可能很乐意找到详细的答案。你重写的脚本有什么不同?
  • 实际上我对 RAM 过载并不确定,但我看到的是,我的旧脚本试图收集有关系统语言的信息并根据它更改精灵获取有关屏幕触摸、屏幕 dpi、用于高分的 PlayerPrefs 等的信息。以正常方式获取这些信息应该不是问题,但我想,当我根据语言更改精灵时,脚本的其他部分尝试用我想在场景中看到用于触摸的标签。这样会创建一个无限循环来更改可能会强制处理器的精灵。
【解决方案2】:

我也遇到过类似的问题,有时问题是设备的内存、空引用等。你也可以尝试强制 Open GL ES 2.0

srry 不能制作 cmets

【讨论】:

  • 我已经尝试将 Open GL ES 强制为 2.0,并且我也尝试通过压缩纹理将其强制为 3.0。可悲的是,两种方式都失败了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多