iOS 8上的SpriteKit场景为空

时间:2017-03-01 12:46:34

标签: ios swift xcode sprite-kit

我正在创建一个SceneKit游戏并且今天遇到了这个问题。该游戏适用于任何iOS 9及更高版本的应用程序,但旧版本是一个很大的麻烦。基本上游戏在iOS 8上的样子只是一个空白的SpriteKit场景(我将背景设置为白色,因此它是白色的)并且由于某种原因不呈现任何内容。我无法弄清楚原因,有谁知道为什么会这样?我搜索了这个并且找不到任何东西。哦,我的部署目标是iOS 7.1,但我没有任何设备可以在iOS 7上进行测试,所以它也可能是一个问题。 我还试图创建一个模板游戏项目(它甚至包含iOS 9依赖代码,大声笑)但是当我尝试运行它时会抛出这个错误:*** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: '*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (SKCameraNode)'。即使我删除了摄像机节点复选框,它仍然会抛出此错误,我不知道该怎么做,除了支持iOS 7和8,我真的不想这样做:(

2 个答案:

答案 0 :(得分:0)

您可能正在使用场景中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

  3. 如果您采用这种方式,我建议您在XC7中进行开发,这样您就可以在iOS 9/10上共享Swift 2.3代码,或者稍后使用内置功能转换为swift 3。

答案 1 :(得分:-1)

此答案基于@BuIlDaLiBlE的评论。

  1. 删除您的.sks文件。
  2. 将新的SpriteKit场景(.sks)添加到项目(可选:将其命名为其他内容并更改GameViewController.m中的字符串)。
  3. 选择新创建的.sks文件。
  4. 在属性检查器(cmd + alt + 7)中取消选中"使用相机节点"。
  5. 完成。

    您是否尝试将其关闭再打开?