2017-03-13 32 views
2

我試着將一個SpriteKit項目的模板代碼複製到一個操場上,但是當我呈現場景時,我所得到的只是一個灰色屏幕。我是否需要創建一個SKScene,如果有,我如何將它分配給我正在使用的場景類。如何在Swift Playgrounds中使用帶有紋理的SKNode設置SKScene?

下面是我的代碼來創建和呈現的場景:

@objc func goToGameScene(){ 

    print("GameView Loaded") 

sceneView = SKView(frame: CGRect(x: 0, y: 0, width: 666, height: 500)) 



sceneView.backgroundColor = UIColor.black 

PlaygroundPage.current.liveView = sceneView 

if let view = self.sceneView as SKView? { 
    // Load the SKScene from 'GameScene.sks' 
    if let scene = SKScene(fileNamed: "GameScene") { 
     // Set the scale mode to scale to fit the window 
     scene.scaleMode = .aspectFill 

     // Present the scene 
     view.presentScene(scene) 
    } 

    view.ignoresSiblingOrder = true 


} 

,這是我SKScene類,它有GameScene.swift的文件名。

import Foundation 
import SpriteKit 
import GameplayKit 

class GameScene: SKScene, SKPhysicsContactDelegate { 
var bg = SKSpriteNode() 
func didBegin(_ contact: SKPhysicsContact) { 
} 
override func didMove(to view: SKView) { 
    self.physicsWorld.contactDelegate = self 
    let bgTexture = SKTexture(image: UIImage(named: "MainScreenBackground.png")!) 
    let moveBGAnimation = SKAction.move(by: CGVector(dx:-bgTexture.size().width, dy:0), duration: 11) 
    let shiftBackground = SKAction.move(by: CGVector(dx: bgTexture.size().width, dy:0), duration: 0) 
    let repeatAnimationBg = SKAction.repeatForever(SKAction.sequence([moveBGAnimation, shiftBackground])) 
    var q = 0 
    while(q < 3){ 
     bg = SKSpriteNode(texture: bgTexture) 
     bg.position = CGPoint(x: bgTexture.size().width * CGFloat(q), y: self.frame.midY) 
     bg.size.height = self.frame.height 
     bg.run(repeatAnimationBg) 
     self.addChild(bg) 
     q+=1 
     bg.zPosition = -1 
    } 
} 

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
} 
override func update(_ currentTime: TimeInterval) { 
} 
} 

回答

1

假設你已經拖放您MainScreenBackground.png圖像到你Assets.xcassets文件夾,可以使用下面的代碼將圖像添加到您的場景作爲SKSpriteNode

override func didMove(to view: SKView) { 
    self.physicsWorld.contactDelegate = self 
    let bgTexture = SKSpriteNode(imageNamed: "MainScreenBackground") 
    self.addChild(bgTexture) 
    ...