Я попытался добавить подпредставление к своему GameViewController (потому что я хочу добавить рекламный баннер внизу). Я создал его следующим образом:
if let view = self.view as! SKView? {
let subView = SKView(frame: CGRect(origin: CGPoint.zero, size: CGSize(width: 415, height: 685)))
view.addSubview(subView)
if let scene = SKScene(fileNamed: "GameScene") {
scene.scaleMode = SKSceneScaleMode.aspectFit
subView.presentScene(scene)
view.ignoresSiblingOrder = true
view.showsFPS = false
view.showsNodeCount = false
view.showsDrawCount = false
addBannerViewToView(bannerView)
}
}
Это работает изначально - он представляет мою GameScene. Но позже я прошу мою GameScene представить еще один созданный мной подкласс SKScene, который я называю Shop, используя следующий код:
func initializeShop() {
let shop = Shop(size: self.size)
let transition = SKTransition.fade(withDuration: 0.1)
self.view?.presentScene(shop!, transition: transition)
}
А его просто нет. Это остается на текущем представлении.
Это работает вполне нормально, если я НЕ добавляю подпредставление к начальному представлению в GameViewController, то есть
if let view = self.view as! SKView? {
if let scene = SKScene(fileNamed: "GameScene") {
scene.scaleMode = SKSceneScaleMode.aspectFit
view.presentScene(scene)
view.ignoresSiblingOrder = true
view.showsFPS = false
view.showsNodeCount = false
view.showsDrawCount = false
}
}
Так что, похоже, существует некоторое свойство SKView по умолчанию GameViewController, которое позволяет презентация, но не подпредставление. Но я не могу найти какую-либо документацию, в которой говорится, что - насколько я могу судить, все SKViews должны иметь возможность представлять SKScenes.
Любая помощь будет принята с благодарностью.