2016-10-08 4 views
1

스프라이트 키트에 응용 프로그램을 만들고 기본 "GameScene"이 아닌 장면에서 응용 프로그램을로드하려고합니다. 이미 "Level1"이라는 제목의 새로운 .sks 파일을 만들고 "Level1.swift"라는 Cocoa Touch 클래스를 만들었습니다. 그러나 "Level1.swift"내의 장면은 여전히 ​​앱에 표시되지 않습니다. 여기 다른 SKScene 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 
} 
} 

여기

는 Level1.swift 코드입니다.

+0

타일 코드를'GameScene.swift'에 넣고 GameViewController를 업데이트하여'GameScene'을로드하면 예상대로 작동합니까? 예기치 않은 동작을 분리하는 것은 항상 좋은 생각입니다! –

+1

sks 파일에서 사용자 지정 클래스를 Level1로 정의했는지 확인 했습니까? – Knight0fDragon

답변

1

@ Knight0fDragon과 동의하십시오. Level1.sks 파일을 확인하고 Custom ClassCustom Class 속성에서 Level1으로 설정하십시오. 여기에 a demo

관련 문제