Spritekit 场景内容被放大
Spritekit Scene content is zoomed in
我正在从视图控制器(向其传递 difficulty
字符串)以编程方式呈现游戏 Controller/Game 场景,如下所示:
class GameController: UIViewController {
var difficulty: String!
override func loadView() {
self.view = SKView(frame: UIScreen.main.bounds)
}
override func viewDidLoad() {
super.viewDidLoad()
let skView = self.view as! SKView
let scene = GameScene(size: view.frame.size)
// Set the scale mode to scale to fit the window
scene.scaleMode = .aspectFill
scene.difficulty = difficulty
// Present the scene
skView.presentScene(scene)
skView.ignoresSiblingOrder = true
}
}
然而当场景出现在屏幕上时,所有内容都是"zoomed in"(SKSpriteNode
s,SKLabel
s等)
有没有人知道如何解决这个问题?
非常感谢。
PS:通过 SKS 展示可以,只是 SKLabel
在 iPad 上的定位有问题。这种方法的问题是我无法找到如何通过 SKS 将我的自定义变量 difficulty
传递到场景,即使我在 Storyboard 中将其自定义 class 更改为我的,以便也应该这样做。
你真的有2个问题。首先是我当前的设置有什么问题,其次我可以使用 sks 文件并仍然传递数据。
回答第二个问题,是
if let gameScene = GameScene(fileNamed: "GameScene") {
self.gameScene = gameScene
self.gameScene.stage = 1
self.gameScene.setupBasedOnStage()
self.gameScene.scaleMode = .aspectFill
self.view?.presentScene(self.gameScene, transition: SKTransition.reveal(with: .down, duration: 1.0))
}
您可以在显示页面(在本例中为舞台)之前设置任何自定义 属性,如果需要,您可以调用设置函数来加载 info/graphics阶段。
我的场景使用 sks 文件并一直这样设置它们。
我正在从视图控制器(向其传递 difficulty
字符串)以编程方式呈现游戏 Controller/Game 场景,如下所示:
class GameController: UIViewController {
var difficulty: String!
override func loadView() {
self.view = SKView(frame: UIScreen.main.bounds)
}
override func viewDidLoad() {
super.viewDidLoad()
let skView = self.view as! SKView
let scene = GameScene(size: view.frame.size)
// Set the scale mode to scale to fit the window
scene.scaleMode = .aspectFill
scene.difficulty = difficulty
// Present the scene
skView.presentScene(scene)
skView.ignoresSiblingOrder = true
}
}
然而当场景出现在屏幕上时,所有内容都是"zoomed in"(SKSpriteNode
s,SKLabel
s等)
有没有人知道如何解决这个问题?
非常感谢。
PS:通过 SKS 展示可以,只是 SKLabel
在 iPad 上的定位有问题。这种方法的问题是我无法找到如何通过 SKS 将我的自定义变量 difficulty
传递到场景,即使我在 Storyboard 中将其自定义 class 更改为我的,以便也应该这样做。
你真的有2个问题。首先是我当前的设置有什么问题,其次我可以使用 sks 文件并仍然传递数据。
回答第二个问题,是
if let gameScene = GameScene(fileNamed: "GameScene") {
self.gameScene = gameScene
self.gameScene.stage = 1
self.gameScene.setupBasedOnStage()
self.gameScene.scaleMode = .aspectFill
self.view?.presentScene(self.gameScene, transition: SKTransition.reveal(with: .down, duration: 1.0))
}
您可以在显示页面(在本例中为舞台)之前设置任何自定义 属性,如果需要,您可以调用设置函数来加载 info/graphics阶段。
我的场景使用 sks 文件并一直这样设置它们。