2017-08-30 65 views
0

有沒有最佳做法,當涉及到在場景和節點子類中重寫touchesBegan等遊戲而不是使用gestureRecognizers?SpriteKit/Scenekit TouchesBegan或GestureRecognizer

我知道蘋果的模板中有override func touchesXXXX方法,這允許更多的控制(除非使用自定義識別器)。但是很多教程似乎都使用了GestureRecognizer方法。

這是主要的教程使事情變得更容易,還是更常見的使用GestureRecognizer路線來消除一些複雜性?我知道這可能歸結爲開發人員的偏好,但我正在尋找'最佳實踐' - 蘋果在製作遊戲時實際上是否建議了另一種方法?

回答

1

我也想知道同樣的事情 - 當你將SceneKit和SpriteKit混合在一起時,它會變得更加有趣。我還沒有看到任何官方文件提出這樣或那樣的建議,因爲它們確實適用於稍微不同的事情。你會發現Xcode遊戲模板使用其中一種(或者兩者兼備,在跨平臺spritekit遊戲的情況下)。

我認爲大多數教程和博客使用GestureRecognizer方法的原因是它爲您做了很多工作,但是當您遇到更復雜的用例時,您可能會發現需要手動處理觸摸並自己處理手勢(在互聯網上浮動的幾個例子),因爲我必須爲一個特定的項目。

我也在一些博客上看過,有時候使用觸摸方法和手勢識別器一起可以給出不正確的結果(特別是缺少觸摸),但這可能是陳舊的信息 - 這是值得檢查的,但如果你確實決定使用。

所以要回答這個問題,我不認爲這是正式的最佳實踐,因爲兩者都是有效的和現有的方法。我會說,使用你認爲更合適的代碼,並儘可能簡化代碼。

+0

我同意使用直接觸摸識別和UIGestureRecognizers可能會導致麻煩。如果有最佳做法,那麼如果您的用戶界面自然適合他們,則可能應該使用手勢識別器,並對更復雜的用例進行直接觸摸識別。 (即與使用普通UIKit相同)。與生產力應用程序相比,遊戲往往具有更多特定的用戶界面需求,因此您可能會在遊戲空間中看到更多明確的觸摸跟蹤,但可能有很多用例,即使在手勢識別器都很好的遊戲中。 –

1

如果您只想響應屏幕上的觸摸,請使用3種標準「觸摸」方法。

如果你需要響應不同的滑動,平底鍋,捏等,那麼你需要手勢識別器。