2017-03-01 85 views
1

我正在创建一个SceneKit游戏,并且今天遇到了这个问题。这款游戏在任何iOS 9及更高版本中的工作原理都是如此,但老版本的麻烦很大。基本上,iOS 8上的游戏看起来只是一个空白的SpriteKit场景(我将背景设置为白色,因此它是白色的),并且由于某些原因不渲染任何东西。我无法弄清楚为什么,有人知道这是为什么?我搜索了这个,并没有发现任何东西。哦,我的部署目标是iOS 7.1,但我没有任何设备可以在iOS 7 atm上测试,因此它可能也是一个问题。 我也尝试创建一个模板游戏项目(它甚至有iOS 9的相关代码,但是当我尝试运行它时会抛出这个错误:*** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: '*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (SKCameraNode)'。即使我取出相机节点复选框,它仍然抛出这个错误,我不知道除了iOS的7和8的降落支持,我真的不想做:(SpriteKit场景在iOS 8上空白

+0

代码会有帮助 – Fluidity

+1

它与Game模板没什么不同,场景在GameViewController中像这样加载: 'if let view = self.view as! SKView? { 如果让现场= SKScene(fileNamed: “MainMenuScene”) { //设置缩放模式扩展到适合窗口 scene.scaleMode .fill伪= //目前现场 view.presentScene(场景) } }' – BuIlDaLiBlE

+0

“没那么不同”可能会有所不同。如果它是一个基本的游戏模板,它将在ios8上运行。事实上,为什么不尝试一个空的项目,看看它是否是你的代码,或与您的Xcode /模拟器/设备的问题:) – Fluidity

回答

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文件类型的问题引起的。 <()

UPDATE:

周围窥探这似乎是一个错误或问题没有一个明确的解决方案后。我的最后两个解决办法是:

  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的共享雨燕2.3的代码,或者使用内置的功能转换为SWIFT 3以后。

+0

对于老版本没有的功能Xcode提供了一个修复与如有语句 - 这是我用什么。我从来没有在我的项目中使用任何相机节点,也没有看到任何模板,但Xcode仍然抱怨。 但无论如何,我很欣赏答案,并且Obj-C to Swift转换器非常方便,谢谢! – BuIlDaLiBlE

+0

@BuIlDaLiBlE ACTUALLY,尝试查看您的.sks文件...您可能有“使用相机”检查!这可能是为什么..查看我最新的答案在底部。 – Fluidity

+0

还是抛出了同样的错误:( 这是很奇怪的 - 模板崩溃,但我的应用程序不会(仍然呈现什么寿) – BuIlDaLiBlE

-1

这个答案是基于@BuIlDaLiBlE评论。

  1. 删除您.sks文件。
  2. 添加新SpriteKit场景(.sks)到项目(可选:它命名为别的东西,改变你的GameViewController.m字符串)。
  3. 选择您新创建的.sks文件。
  4. 在属性检查器(cmd + alt + 7)中,取消选中“使用相机节点”。

完成。

你试过将其关闭并再次打开?