Peek 和 Pop 函数 SpriteKit

Peek and Pop Function SpriteKit

我在 `SKScene' 中有一个菜单。我正在尝试将 Peek 和 Pop 功能集成到其中。我有多种可能的选择,所以我的问题是如何确定哪个被强制触摸。

这是我的代码:

import SpriteKit
import UIKit

class Menu: SKScene, UIViewControllerPreviewingDelegate {

//SETUP Menu


 func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
        return UIViewController()
    }

    //POP
    func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) {
        return
    }

}

GameViewController.swift:

import UIKit
import SpriteKit

class GameViewController: UIViewController {


    override func viewDidLoad() {
    super.viewDidLoad()

    if let scene = GameScene(fileNamed:"GameScene") {
       if self.traitCollection.forceTouchCapability == .available {
          registerForPreviewing(with: scene as! UIViewControllerPreviewingDelegate, sourceView: scene.view!)
          }
         }

       // Move to Menu

 }
}

我很确定我应该在 sourceView 字段中传递信息。但由于这是在 GameViewController 中,我不知道该怎么做。而且我不知道如何在菜单中执行此操作,我应该把这段代码放在哪里?

 if let scene = GameScene(fileNamed:"GameScene") {
            if self.traitCollection.forceTouchCapability == .available {
                registerForPreviewing(with: scene as! UIViewControllerPreviewingDelegate, sourceView: ButtonPressed)
            }
        }

您将无法像您尝试的那样在 SKScene 或 SKSpriteNode 菜单中使用 Peek 和 Pop,我试图在我的一个游戏中做同样的事情。

Peek 和 Pop 仅适用于 UIKit,特别是它允许您预览 (Peek) 而不是打开 (Pop) UIViewControllers。

在 SpriteKit 中你通常只有 1 个 ViewController, GameViewController。该游戏ViewController 应该只处理您的 SKScene 演示,您的实际 UI is/should 直接在相关 SKScenes 中使用 SpriteKit API 完成,例如 SKLabelNodes、SKSpriteNodes 等。因此,您并没有真正使用 UIKit,也没有太多可以使用 Peek 和 Pop 进行预览的内容。

这有一些例外情况,所以这取决于您制作的游戏类型。例如,在我的一个游戏中,我使用 UICollectionViewController 作为关卡 select 菜单(40 个关卡),因为它们非常适合该场景(单元格重用、平滑滚动等) .因为该菜单是使用 UIKit 制作的,所以我可以在您强制触摸单元格时注册 peek 和 pop。我有另一个 UIViewController 和一些 UILabels,UIImageViews 等我专门用于偷看(见图),当我弹出时我只是开始实际水平.

所以综上所述,在SpriteKit中可以使用Peek和Pop的情况并不多。我也不建议您尝试使用 UIKIt 设计您的 UI,以便您可以使用 Peek 和 Pop。希望 Apple 有一天会更新 API,这样什么时候可以查看和弹出 SKNodes 或 SKScenes,那就太棒了。

希望对您有所帮助