【问题标题】:Displaying a different SKScene Swift显示不同的 SKScene Swift
【发布时间】:2016-10-08 18:25:45
【问题描述】:

我正在 sprite kit 中创建一个应用程序,并且我试图从一个不是默认“GameScene”的场景中加载它。我已经创建了一个名为“Level1”的新 .sks 文件并创建了一个名为“Level1.swift”的 Cocoa Touch 类。但是,“Level1.swift”中的场景仍然没有显示在应用程序中。

这是Level1.swift的代码:

    import Foundation
    import SpriteKit

    class Level1: SKScene {
    var tile = Tile(tile: SKShapeNode(rect: CGRect(x: 0, y: 0, width: 320, height: 320), cornerRadius: 10.0))
var tile2 = Tile(tile: SKShapeNode(rect: CGRect(x: 0, y: 0, width: 320, height: 320), cornerRadius: 10.0))
var tile3 = Tile(tile: SKShapeNode(rect: CGRect(x: 0, y: 0, width: 320, height: 320), cornerRadius: 10.0))
var tile4 = Tile(tile: SKShapeNode(rect: CGRect(x: 0, y: 0, width: 320, height: 320), cornerRadius: 10.0))

override func didMove(to view: SKView) {
    backgroundColor = UIColor.white

    tile.color = UIColor.green
    tile.maxTileNumberCounter = 4
    tile.tileNumber = 1
    tile.initializeTile()

    tile2.color = UIColor.blue
    tile2.maxTileNumberCounter = 4
    tile2.tileNumber = 2
    tile2.initializeTile()

    tile3.color = UIColor.blue
    tile3.maxTileNumberCounter = 4
    tile3.tileNumber = 3
    tile3.initializeTile()

    tile4.color = UIColor.blue
    tile4.maxTileNumberCounter = 4
    tile4.tileNumber = 4
    tile4.initializeTile()



    self.addChild(tile.tile)
    self.addChild(tile2.tile)
    self.addChild(tile3.tile)
    self.addChild(tile4.tile)
}

这是我的 viewController 的代码:

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: "Level1") {
            // 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
    }
}

override var shouldAutorotate: Bool {
    return true
}

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    if UIDevice.current.userInterfaceIdiom == .phone {
        return .allButUpsideDown
    } else {
        return .all
    }
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Release any cached data, images, etc that aren't in use.
}

override var prefersStatusBarHidden: Bool {
    return true
}
}

我们将不胜感激。

【问题讨论】:

  • 如果您将平铺代码放入 GameScene.swift 并更新 GameViewController 以加载 GameScene 是否按预期工作?隔离意外行为总是一个好主意!
  • 您确定在 sks 文件中将自定义类定义为 Level1

标签: ios swift sprite-kit skscene


【解决方案1】:

同意@Knight0fDragon。您应该检查您的Level1.sks 文件,在Custom Class 检查器中将Custom Class 设置为Level1。这是demo

【讨论】:

    猜你喜欢
    • 2021-11-26
    • 2017-06-16
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多