Как изменить размер SKscene

каждый раз, когда я запускаю свое приложение в своем симуляторе, масштаб просмотра всегда составляет 768 1024, как вы измените это на 1024 768. вот класс кода размера по умолчанию GameViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

    if let scene = GameScene(fileNamed:"GameScene") {
        // Configure the view.
        let skView = self.view as! SKView
        skView.showsFPS = true
        skView.showsNodeCount = true

        /* Sprite Kit applies additional optimizations to improve 
rendering performance */
        skView.ignoresSiblingOrder = true

        /* Set the scale mode to scale to fit the window */
        scene.scaleMode = .AspectFill

        skView.presentScene(scene)
    }
}

person Gage    schedule 28.03.2016    source источник
comment
scene.size = ..., и вы можете переместить свой код сверху из viewDidLoad в viewWillLayoutSubviews или viewDidAppear... stackoverflow.com/a/26266857/1702413   -  person TonyMkenu    schedule 28.03.2016
comment
Нет смысла помещать его в ViewWillLayoutSubviews.   -  person crashoverride777    schedule 28.03.2016
comment
Вы просто хотите изменить ориентацию экрана?   -  person septicorn    schedule 01.04.2016


Ответы (1)


1) Если вы используете файлы .sks (визуальный редактор spriteKit)

Просто перейдите к файлу GameScene.sks (не быстрому) в вашем проекте, где вы можете изменить размер сцены в инспекторе справа.

Вы можете проверить эту статью здесь, где они показывают это, если вы немного прокрутите вниз. Это хороший учебник, который вы должны подготовить, если планируете работать с визуальным редактором.

https://www.raywenderlich.com/118225/introduction-sprite-kit-scene-editor

2) Не использовать файлы .sks, загружать сцены в коде

Если вы не используете файлы .sks, вы можете удалить файл GameScene.sks и загрузить сцену следующим образом.

 override func viewDidLoad() {
super.viewDidLoad()

    // Configure the view.
    guard let skView = self.view as? SKView else { return }

    let scene = GameScene(size: CGSize(width: 1920, height: 1080))

    skView.showsFPS = true
    skView.showsNodeCount = true

    /* Sprite Kit applies additional optimizations to improve rendering performance */
    skView.ignoresSiblingOrder = true

    scene.scaleMode = .AspectFill

    skView.presentScene(scene)
  }

Надеюсь это поможет

person crashoverride777    schedule 28.03.2016
comment
я попробовал оба ваших метода, ни один из них не работал, я получил сообщения об ошибках от обоих. Я не думаю, что реализую это правильно. вот представление по умолчанию загрузило код, переопределите func viewDidLoad () { super.viewDidLoad (), если пусть сцена = GameScene (fileNamed: GameScene) { пусть skView = self.view as! SKView skView.showsFPS = true skView.showsNodeCount = true skView.ignoresSiblingOrder = true scene.scaleMode = .AspectFill skView.presentScene(scene) } } для реализации предоставленных вами кодов, что мне нужно удалить и что мне нужно добавить? - person Gage; 28.03.2016
comment
Обновил, дайте знать, как дела. - person crashoverride777; 28.03.2016
comment
Если вы используете стандартный шаблон игры xCode, который вы делаете из своего кода выше, вы работаете с файлами .sks, поэтому вам следует рассмотреть метод 1. Если вы хотите сделать свою игру полностью в коде, вы можете удалить GameScene .sks и следуйте 2. - person crashoverride777; 28.03.2016
comment
@ Crashoverride777 Я реализовал ваш второй вариант, в самом коде не было ошибок, но я получаю новую ошибку для всех моих функций переопределения, в которой говорится, что переопределение может быть указано только для членов класса, а super нельзя использовать вне членов класса. - person Gage; 28.03.2016
comment
Извините, я по ошибке поставил лишний { в конце кода. Проверьте ответ еще раз - person crashoverride777; 28.03.2016