ios - SpriteKit 场景在 iOS 8 上是空白的

标签 ios swift xcode sprite-kit

我正在创建一个 SceneKit 游戏,今天遇到了这个问题。该游戏在任何 iOS 9 及更高版本中都可以正常运行,但旧版本是个大麻烦。基本上游戏在 iOS 8 上看起来只是一个空白的 SpriteKit 场景(我将背景设置为白色所以它是白色的)并且由于某种原因没有渲染任何东西。想不通是什么原因,谁知道这是为什么?我搜索了这个但没有找到任何东西。哦,我的部署目标是 iOS 7.1,但我没有任何设备可以在 iOS 7 atm 上进行测试,所以这也可能是一个问题。 我还尝试创建一个模板游戏项目(它甚至包含 iOS 9 相关代码,大声笑)但是当我尝试运行它时会抛出此错误:*** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException',原因:'*** -[NSKeyedUnarchiver decodeObjectForKey:]: 无法解码类 (SKCameraNode) 的对象'。即使我删除了相机节点复选框,它仍然会抛出这个错误,我不知道除了放弃对 iOS 7 和 8 的支持之外该怎么做,我真的不想这样做:(

最佳答案

您可能在场景中使用了 iOS 7 或 8 不可用的功能。您可以将某些代码块声明为仅针对某些 iOS 版本激活,但如果您正在使用诸如相机节点之类的关键功能,那么您可能需要增加部署目标,或使用老式相机。

此链接展示了如何实现老式相机: https://developer.apple.com/library/content/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Actions/Actions.html

你可以使用 https://objectivec2swift.com/#/home/converter/如果需要,将代码片段转换为 Swift。

如果您没有使用相机节点,请尝试检查您的 .sks 文件中是否有任何对相机节点的引用。有一个名为“使用相机”的选项默认情况下会在编辑器中为您的基本场景选中,无论你是否做过:

enter image description here

我发现没有代码行堆栈跟踪的随机错误通常是由 .sks 或其他非 swift 文件类型 <.<()

引起的

更新:

在仔细研究之后,这似乎是一个错误或没有明确解决方案的问题。我的最后两个解决方案是:

  1. 放弃 iOS 7,看看 iOS 8+ 是否给您错误(无论如何我认为 8 是最低目标)..用户和功能太少我怀疑它是否值得支持 7...但是,如果你必须:

  2. 下载 Xcode 7(或更早版本)并简单地创建两个项目。 http://adcdownload.apple.com/Developer_Tools/Xcode_7.3.1/Xcode_7.3.1.dmg

如果您选择这条路线,我建议您在 XC7 中进行开发,这样您就可以在 iOS 9/10 之间共享 Swift 2.3 代码,或者稍后使用内置功能转换为 swift 3。

关于ios - SpriteKit 场景在 iOS 8 上是空白的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42532142/

相关文章:

UITableViewCells 中的 iOS 动态表单,检索值

ios - Swift:不保存 NSUserDefaults.standardUserDefaults 值

swift - 如何将函数返回到标签 StringValue

ios - 通过 CFStream 的 HTTP 请求

ios - 使用 ARC 为 @property 覆盖 @property setters with 'copy'

c++ - 在 Objective-C(不是 iPhone)中编译 Eigen 时出现问题

objective-c - 在 Objective-C 中使用 Protocol Buffers

ios - EXC_BAD_INSTRUCTION - 从数组中获取随机项

ios - UITableView - 与表格 View 的交互消失了一切

ios - Swift 4 - SceneKit 上的 SpriteKit - 防止触摸底层相机控件