2016-12-07 3 views
1

У меня есть приложение, которое Im делает, и мне нужно перейти от одного представления приложения приложения к GameScene. Я добавил GameViewController.swift, GameScene.swift и GameScene.sks в свой проект. Как я перейду с моего контроллера просмотра на свой GameScene? Я искал примеры, но ни один из них не помог, любые быстрые решения были бы замечательными.Как перейти от одного взгляда к spritekit

Вот код, который я использую, чтобы перейти к своей игре.

let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
let gameView: UINavigationController = storyboard.instantiateViewController(withIdentifier: "miniGame") as! UINavigationController 
self.present(gameView, animated: true, completion: nil) 

, но я получаю сообщение об ошибке

Could not cast value of type 'UIView' (0x2d73b00) to 'SKView' (0x1ba878c). 

(lldb)

он выталкивает ошибку на этой строке кода в моем GameViewController

if let view = self.view as! SKView? { 
+1

GameViewController точно так же, как и любой другой контроллер, только что он представляет собой SKView, который в свою очередь отвечает за представление SKScene. Поэтому, если я чего-то не упускаю, просто создайте segue из контроллера представления в GameViewController через раскадровку и выполните функцию выполнения в своем исходном контроллере представления, когда вы хотите показать контроллер игрового представления. –

+0

Обновлено @KenToh – shane

+0

Для тех, кто придет в Swift и SpriteKit без значительного понимания кастингов, типов, представлений, сцен и их различных отношений, точка входа, чтобы получить что-либо для работы между этими двумя мирами (UIKit и SpriteKit), является НОЧНОЙ странности @ElTomato. Я знаю. Вы, вероятно, похожий человек, для которого все это имеет смысл ... но, как кто-то из другой группы, я очень хорошо знаю боль Шейна. – Confused

ответ

4

вы должны выбрать вашу view в ViewController, то в инспекторе идентификации установите свой собственный класс в «SKView». он решит вашу проблему.

SKView

2

Следующая должно работать для вас.

import UIKit 
import SpriteKit 

class GameViewController: UIViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     if let scene = GameScene(fileNamed:"GameScene.sks") { 
      // 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 = false 

      /* Set the scale mode to scale to fit the window */ 
      scene.scaleMode = .AspectFill 
      skView.presentScene(scene) 
     } 
    } 
} 

Убедитесь (1), что у вас есть GameViewController набор на имя класса контроллера представления сцены над Main.storyboard, (2), что у вас есть SKView набор на имя класса View под Game View Controller

Смежные вопросы