使用以下代码从GameScene转到PlayScene时,一切正常:
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
if self.nodeAtPoint(location) == self.playButton1 {
var scene = PlayScene(size: self.size)
let skView = self.view as SKView!
skView.ignoresSiblingOrder = true
scene.scaleMode = .ResizeFill
scene.size = skView.bounds.size
skView.presentScene(scene)
}
}
但是当我使用下面的代码从PlayScene到GameScene时,它会被放大:
if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
let skView = self.view as SKView!
skView.ignoresSiblingOrder = true
scene.scaleMode = .ResizeFill
scene.size = skView.bounds.size
skView.presentScene(scene)
}
尝试更新代码:
var scene = GameScene(size: self.size)
let skView = self.view as SKView!
skView.ignoresSiblingOrder = true
scene.scaleMode = .ResizeFill
scene.size = skView.bounds.size
skView.presentScene(scene)
}
为什么?有什么建议吗?
答案 0 :(得分:0)
在第一个代码段中,您创建了self.size
的新场景,其大小与旧场景相同。但在第二个方法中,您使用另一种方法来执行此操作,并且新文件的大小是从文件 GameScene.sks 初始化的,默认情况下大小为1024x768。
修改强>
你使用过
吗?if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {...}
在 GameViewController.swift 中创建第一个场景?如果是这样,请尝试用
替换此行 let scene = GameScene(size: view.bounds.size)
我担心你的按钮调整大小(放大)的原因是你第一次加载 GameScene 时它们的大小不合适,实际上它们是在场景大小1024×768。您的按钮被硬编码为400
宽度,几乎是场景宽度的1/3(1024pt)。再次加载 GameScene 时,其宽度现在变为屏幕宽度,因此您会发现按钮调整大小。打印scene.size.width
以获取更多信息。
答案 1 :(得分:0)
我遇到了同样的问题。 对我来说,问题是当回到第一个场景时,场景大小变得更小了。
场景1)GameMap场景
场景2)GameLevel场景
当从场景1移动到场景2时,一切看起来都很好但是当从场景2移回场景1时#34;场景1和#34;尺寸更改为场景2的尺寸
场景1)GameMap场景 - >回去之后
我的解决方案是专门改变" didMoveToView"中的场景大小。并设置"场景1"的scaleMode;见下文:
self.view?.bounds = CGRectMake(0, 0, Constants.screenWidth, Constants.screenHeight)
self.scene?.size = CGSizeMake(1024, 4096)
self.scaleMode = SKSceneScaleMode.AspectFill
希望它有所帮助 BR 芽