ios - SpriteKit - didMovetoView 未被调用

标签 ios swift xcode sprite-kit

这是我的 View Controller 代码

import UIKit
import SpriteKit
import GameplayKit
class GameViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

    if let view = self.view as! SKView? {
        // Load the SKScene from 'GameScene.sks'
        if let scene = SKScene(fileNamed: "GameScene") {
            // Set the scale mode to scale to fit the window
            scene.scaleMode = .aspectFill
            // Present the scene
            view.presentScene(scene)
        }

        view.ignoresSiblingOrder = true

        view.showsFPS = true
        view.showsNodeCount = true
    }
}

这是我的 GameScene 代码

import SpriteKit
import GameplayKit

    class GameScene: SKScene {
       override func didMove(to view: SKView) {
            print("gets called")
        }

但是由于某些原因,在debug区,并没有打印“gets called”,这说明didMove根本就没有被调用过。这里发生了什么事?我错过了什么吗?

最佳答案

iOS 9 的方式

在您的 GameViewController 中尝试直接呈现您的 GameScene 而不是通用的 SKScene。

if let scene = GameScene(fileNamed: "GameScene") { 
...

记住“fileNamed”不是 .swift 文件的名称,它是用于 xCode 级别编辑器的 .sks 文件的名称。

新的 iOS 10 方式

Apple 现在似乎更喜欢像您尝试的那样传递一个通用的 SKScene。

  if let scene = SKScene(fileNamed: "GameScene") { ... }

要使其正常工作,请转到相关的 .sks 文件并转到右侧的检查器。单击倒数第二个项目(自定义类)并将 .swift 文件的名称输入到自定义类字段中。

希望这对您有所帮助。

关于ios - SpriteKit - didMovetoView 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39911604/

相关文章:

swift - Cell Tap 在 didSelectRowAtIndexPath 上不起作用

iphone - 希望在 iPhone Storyboard应用程序中最大限度地重用

ios - 无法在 ios 中调整横向 View

iOS 使用 FFmpeg+libx264 构建 PJSIP

ios - 如何从不区分大小写的 NSString 中搜索子字符串

xcode - 未调用 itemForActivityType

ios - 如何通过 segue - Swift 从结构对象数组发送变量

ios - 核心剧情: doxygen config file does not exist

ios - WCSession transferUserInfo 仅适用于前台

ios - Wkwebview 100%丢包预设