Мне нужен размер SKScene, чтобы сделать некоторые начальные вычисления в моем методе didMove.Когда я использую SKSceneScaleMode в случае resizeFill для установки scaleMode моей gameScene, значения self.size равны (0, 0) в методе didMove gameScene.Когда я запрашиваю размер в других методах, таких как touchesBegan, значения соответствуют ожидаемым (ненулевые значения, соответствующие размеру сцены).Эта проблема возникает только при установке gameScene.scalemode на resizeFill перед представлением сцены.Любой другой случай SKSceneScaleMode работает нормально.
Вот пример кода
import SpriteKit
class GameViewController: UIViewController {
override func loadView() {
self.view = SKView()
}
override func viewDidLoad() {
super.viewDidLoad()
let skView = view as! SKView
let gameScene = GameScene(size: UIScreen.main.bounds.size)
gameScene.scaleMode = .resizeFill
skView.presentScene(gameScene)
}
}
class GameScene: SKScene, SKPhysicsContactDelegate {
override func didMove(to view: SKView) {
print(self.size) // self.size == (0,0)
// ...calculations using self.size
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print(self.size) // self.size has expected, non-zero valeus
}
}
Я не использую раскадровки или файлы sks.Вот как выглядит appDelegate
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow()
window?.makeKeyAndVisible()
let gameViewController = GameViewController()
window?.rootViewController = gameViewController
return true
}
}