Ответ 1
Я, наконец, исправил это! Вместо того, чтобы помещать функции в GameViewController и вызывать их из игровой сцены, мне пришлось поместить функции в gameScene и заменить view на self.view!.
Невозможно передать значение типа "UIView" (0x112484eb0) в "SKView" (0x111646718). Я продолжаю получать эту ошибку. Может кто-нибудь мне помочь, потому что строка кода по умолчанию. Я превратил игру SK в последний быстрый синтаксис, используя бета-версию xcode 7. У компилятора было много чего, поэтому я вернулся к xcode 6. У меня нет красных ошибок; но, игра вылетает и говорит нить 1: сигнал SIGARBT. Любые советы по изменениям между быстрым 2 и последней версией Quick 1, которые могли бы вызвать проблемы при преобразовании в последний быстрый синтаксис. Возможно, что-то, что было преобразовано, что я должен изменить в xcode 6.3.2. Я удалю бета-версию после устранения этой проблемы. Вероятно, в коде есть ошибка, потому что я получил ту же ошибку, когда я скопировал код в новый проект xcode. Спасибо заранее!
let skView = self.view as! SKView
Я, наконец, исправил это! Вместо того, чтобы помещать функции в GameViewController и вызывать их из игровой сцены, мне пришлось поместить функции в gameScene и заменить view на self.view!.
Перейдите на свою раскадровку, выберите свой UIViewController, содержащий игру SpriteKit, и выберите вид из меню слева:
Теперь перейдите к Identity Inspector и убедитесь, что Class SKView
, а не UIView
:
Теперь вы можете скомпилировать эту часть кода со своего UIViewController
:
// Configure the view.
SKView * skView = (SKView *)self.view;
Или в Swift:
let skView = self.view as! SKView
Для тех, кто не хочет использовать Storyboard
, вы можете просто создать представление как SKView
в функции ViewController
loadView
.
class ViewController: UIViewController {
override func loadView() {
self.view = SKView()
}
override func viewDidLoad() {
let skView = view as! SKView
...
}
}