2016-10-08 6 views
1

Я создаю приложение в комплекте спрайтов, и я пытаюсь загрузить его из сцены, которая не является по умолчанию «GameScene». Я уже создал новый файл .sks под названием «Level1» и создал класс Touch Cocoa под названием «Level1.swift». Тем не менее, сцена в «Level1.swift» по-прежнему не отображается в приложении.Отображение разного SKScene 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 
} 
} 

Любая помощь в получении этой работы было бы весьма признателен.

+0

Если вы поместите код плитки в 'GameScene.swift' и обновите GameViewController для загрузки' GameScene', это сработает так, как ожидалось? Всегда полезно изолировать неожиданное поведение! –

+1

Вы уверены, что вы определили пользовательский класс для Level1 в файле sks – Knight0fDragon

ответ

1

Согласен с @ Knight0fDragon. Вы должны проверить свой файл Level1.sks, установить Custom Class на номер Level1 в Custom Class инспектор. Вот demo