2017-03-01 78 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)中,取消選中「使用相機節點」。

完成。

你試過將其關閉並再次打開?