2016-10-08 2 views
1

Je crée une application dans un kit de sprite, et j'essaie de la charger à partir d'une scène qui n'est pas la "GameScene" par défaut. J'ai déjà créé un nouveau fichier .sks intitulé "Level1" et créé une classe Cocoa Touch appelée "Level1.swift". Cependant, la scène dans "Level1.swift" ne s'affiche toujours pas dans l'application.Affichage d'un autre SKScene Swift

Voici le code pour 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) 
} 

Et voici le code pour mon 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 
} 
} 

Toute aide à obtenir que cela fonctionne serait grandement apprécié.

+0

Si vous mettez le code de la tuile dans GameScene.swift et que vous mettez à jour GameViewController pour charger GameScene, cela fonctionne-t-il comme prévu? C'est toujours une bonne idée d'isoler un comportement inattendu! –

+1

avez-vous vérifié que vous avez défini la classe personnalisée sur Level1 dans le fichier sks – Knight0fDragon

Répondre

1

D'accord avec @ Knight0fDragon. Vous devriez vérifier votre fichier Level1.sks, définir Custom Class à Level1 dans l'inspecteur Custom Class. Voici un demo