从菜单场景视图转换后新场景视图未居中
New scene view not centered after transition from the menu scene view
我在 GameScene 完成后创建了一个主菜单场景视图。 GameScene 本身运行良好。但是,从主菜单场景视图中转移后,它不会出现在中心。两个 sks 文件具有相同的宽度和高度尺寸以及锚点。这是为什么?
class Menu: SKScene {
var newGameButtonNode: SKSpriteNode?
var bossFightButtonNode: SKSpriteNode?
var highScoreLabelNode: SKLabelNode?
override func didMove(to view: SKView) {
newGameButtonNode = self.childNode(withName: "newGameButton") as? SKSpriteNode
bossFightButtonNode = self.childNode(withName: "bossFightButton") as? SKSpriteNode
highScoreLabelNode = self.childNode(withName: "highScoreLabel") as? SKLabelNode
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
//set touch to self
let touch = touches.first
if let location = touch?.location(in: self) {
let nodesArray = self.nodes(at: location)
if nodesArray.first?.name == "newGameButton" {
let transition = SKTransition.flipHorizontal(withDuration: 0.5)
let gameScene = GameScene(size: self.size)
gameScene.scaleMode = .aspectFill
self.view?.presentScene(gameScene, transition: transition)
}
}
}
}
如果您在场景编辑器中创建了相应的 SKS 文件,那么您可以像这样加载场景...
// Load the SKScene from GameScene.sks'
if let GameScene = GameScene(fileNamed: "GameScene") {
gameScene.scaleMode = .aspectFill
self.view?.presentScene(GameScene, transition)
}
如果您没有在场景编辑器中创建相应的 SKS 文件,而是希望加载在代码使用中创建的场景...
GameScene = GameScene(size: self.view?.bounds.size)
gameScene.scaleMode = .aspectFill
self.view?.presentScene(gameScene, transition)
你说两者都有相应的SKS文件,但你试图通过场景中的代码初始化加载它
我在 GameScene 完成后创建了一个主菜单场景视图。 GameScene 本身运行良好。但是,从主菜单场景视图中转移后,它不会出现在中心。两个 sks 文件具有相同的宽度和高度尺寸以及锚点。这是为什么?
class Menu: SKScene {
var newGameButtonNode: SKSpriteNode?
var bossFightButtonNode: SKSpriteNode?
var highScoreLabelNode: SKLabelNode?
override func didMove(to view: SKView) {
newGameButtonNode = self.childNode(withName: "newGameButton") as? SKSpriteNode
bossFightButtonNode = self.childNode(withName: "bossFightButton") as? SKSpriteNode
highScoreLabelNode = self.childNode(withName: "highScoreLabel") as? SKLabelNode
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
//set touch to self
let touch = touches.first
if let location = touch?.location(in: self) {
let nodesArray = self.nodes(at: location)
if nodesArray.first?.name == "newGameButton" {
let transition = SKTransition.flipHorizontal(withDuration: 0.5)
let gameScene = GameScene(size: self.size)
gameScene.scaleMode = .aspectFill
self.view?.presentScene(gameScene, transition: transition)
}
}
}
}
如果您在场景编辑器中创建了相应的 SKS 文件,那么您可以像这样加载场景...
// Load the SKScene from GameScene.sks'
if let GameScene = GameScene(fileNamed: "GameScene") {
gameScene.scaleMode = .aspectFill
self.view?.presentScene(GameScene, transition)
}
如果您没有在场景编辑器中创建相应的 SKS 文件,而是希望加载在代码使用中创建的场景...
GameScene = GameScene(size: self.view?.bounds.size)
gameScene.scaleMode = .aspectFill
self.view?.presentScene(gameScene, transition)
你说两者都有相应的SKS文件,但你试图通过场景中的代码初始化加载它