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é.
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! –
avez-vous vérifié que vous avez défini la classe personnalisée sur Level1 dans le fichier sks – Knight0fDragon