Ios Spritekit场景内容已放大
我从视图控制器(向其传递Ios Spritekit场景内容已放大,ios,sprite-kit,skspritenode,skscene,skview,Ios,Sprite Kit,Skspritenode,Skscene,Skview,我从视图控制器(向其传递难度字符串)以编程方式呈现游戏控制器/游戏场景,如下所示: class GameController: UIViewController { var difficulty: String! override func loadView() { self.view = SKView(frame: UIScreen.main.bounds) } override func viewDidLoad() {
难度
字符串)以编程方式呈现游戏控制器/游戏场景,如下所示:
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
}
}
但是,当场景出现在屏幕上时,所有内容都被“放大”(SKSpriteNode
s、SKLabel
s等)
有人知道如何解决这个问题吗
非常感谢
PS:通过SKS演示正常,只是在iPad上定位存在问题。这种方法的问题是,我无法找到如何通过SKS将自定义变量
难度
传递给场景,即使我在故事板中将其自定义类更改为我的,这样也应该可以。这里有两个问题。首先是我当前的设置有什么问题,其次我可以使用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))
}
您可以在显示页面之前设置任何自定义属性(在本例中为阶段),如果需要,可以调用设置函数以加载基于阶段的信息/图形
我在我的场景中使用sks文件,并一直这样设置它们。Hey@Ron感谢您的回复,但在演示sks时,我无法访问
var困难:字符串代码>在我的SKScene类中(在我的SKS文件中设置为自定义类)。有什么特别的设置吗?变量设置在哪里?在类内部但在函数外部?设置为私人吗?可能会在你的问题中发布一点场景类文件。另外,如果您将字符串设置为var-demobility=“”,则可以避免将其视为可选的。aspectFill
为我执行此操作