【发布时间】:2016-02-03 00:33:39
【问题描述】:
点击---->查看图片:) This is my GameScene as of now, its hard coded and linked to a Global File of that holds scene data
override func didMoveToView(view: SKView) {
super.didMoveToView(view)
playButton.hidden = true
let background = SKSpriteNode(imageNamed: "us-flag")
background.position = CGPoint(x: size.width/2, y: size.height/2 )
background.blendMode = .Replace
background.zPosition = -1
background.size = self.size
addChild(background)
gameOverButton = SKSpriteNode(imageNamed: "gameOver")
gameOverButton.position = CGPoint(x: size.width / 2 , y: scene!.frame.height - 200)
gameOverButton.zPosition = 3
gameOverButton.xScale = 1.5
gameOverButton.yScale = 1.5
gameOverButton.hidden = true
addChild(gameOverButton)
gameScore = CustomSKLabel(fontNamed: "Chalkduster")
gameScore.text = "Votes: 0"
gameScore.position = CGPoint(x: Int((self.size.width - gameScore.frame.width )) , y: 22)
gameScore.horizontalAlignmentMode = .Center
gameScore.fontSize = 27
gameScore.zPosition = 3
gameScore.fontColor = SKColor.whiteColor()
addChild(gameScore)
/* for i in 0 ..< 5 { createSlotAt(CGPoint(x: 160 + (i * 170), y: 410)) }
for i in 0 ..< 4 { createSlotAt(CGPoint(x: 240 + (i * 170), y: 320)) }
for i in 0 ..< 5 { createSlotAt(CGPoint(x: 160 + (i * 170), y: 230)) }
for i in 0 ..< 4 { createSlotAt(CGPoint(x: 240 + (i * 170), y: 140)) }
RunAfterDelay(1) { [unowned self] in
self.createEnemy() */
for i in 0 ..< 5 { createSlotAt(CGPoint(x: 680 + (i * 170), y: 535)) }
for i in 0 ..< 4 { createSlotAt(CGPoint(x: 715 + (i * 170), y: 435)) }
for i in 0 ..< 5 { createSlotAt(CGPoint(x: 680 + (i * 170), y: 335)) }
for i in 0 ..< 4 { createSlotAt(CGPoint(x: 715 + (i * 170), y: 245)) }
RunAfterDelay(1) { [unowned self] in
self.createEnemy()
我的游戏场景是硬编码的,所有其他场景都是在场景编辑器中构建的,我的尝试是一个通用应用程序,但决定只为 iPhone 发布它曾经正常工作,直到将游戏完全移植到 SpriteKit
游戏视图控制器:
if let scene = WelcomeScene (fileNamed:"WelcomeScene") {
let skView = self.view as! SKView
skView.showsFPS = Constant.DEV.DEBUG
skView.showsNodeCount = Constant.DEV.DEBUG
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFit
skView.presentScene(scene)
}
}
override func prefersStatusBarHidden() -> Bool {
return false
}
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return [UIInterfaceOrientationMask.LandscapeRight ,UIInterfaceOrientationMask.LandscapeLeft]
}
}
GlobalSceneDataSwift:
if let scene = sceneToLoad {
scene.size = size
scene.scaleMode = scaleMode
let transition = SKTransition.fadeWithDuration(3)
self.view?.presentScene(scene, transition: transition)
}
}
}
在我迁移到 SpriteKit 之前,所有东西都嵌入到了 GameViewController 中,我将它用作常规 ViewController,并嵌入了子视图,以促进 GameScene,直到大约第四轮,当 cpu 降至零并且内存达到峰值时,它一直运行良好。所以我选择了 SpriteKit。所有其他场景都适合 iPhone。除了游戏场景。它引入了错误的资产,场景看起来像图片。
GameScene 的旧代码与 UIKit 和 SpriteKit 混合,以防万一:
let deviceIdiom = UIScreen.mainScreen().traitCollection.userInterfaceIdiom
switch (deviceIdiom) {
case .Pad:
let active = SKSpriteNode(imageNamed: self.name!)
active.name = self.name
active.size = CGSizeMake(100, 100)
active.position = CGPoint(x: Int( active.frame.width + 0), y: Int(active.frame.height + 10))
addChild(active)
case .Phone: break
case .TV:
let active = SKSpriteNode(imageNamed: self.name!)
active.name = self.name
active.size = CGSizeMake(100, 100)
active.position = CGPoint(x: Int( active.frame.width + 12), y: Int(active.frame.height + 12))
addChild(active)
default: break
}
let w12 = Int(self.size.width / 12)
let w6 = Int(self.size.width / 6)
let w5 = Int(self.size.width / 5)
let h3 = Int(self.size.height / 3)
for i in 0 ..< 5 { createSlotAt(CGPoint(x: w12 + (i * w5), y: h3 + 120 )) }
for i in 0 ..< 4 { createSlotAt(CGPoint(x: w6 + (i * w5), y: h3 + 60)) }
for i in 0 ..< 5 { createSlotAt(CGPoint(x: w12 + (i * w5), y: h3 + 10 )) }
for i in 0 ..< 4 { createSlotAt(CGPoint(x: w6 + (i * w5), y: h3 - 50)) }
RunAfterDelay(1) { [unowned self] in
self.createEnemy()
}
}
我坚持使用 SpriteKit,单人,因为老实说它更加稳定,具有过渡场景,尤其是具有很多移动部件的场景。场景大小 1920 * 1080 背景图像与该设置匹配,我选择了该大小以防我决定稍后移植到 Apple TV。再次感谢所有花时间在这里回答问题的人。包括图片
传统 更新 检查资产,发现背景尺寸关闭了,因为这部分游戏是两个月前创建的,我忘记了我在代码中手动调整了图片**** 还没有完全解决问题,我的图像显示,背景看起来不像野餐毯。
【问题讨论】:
标签: swift view sprite-kit skscene ios-universal-app