#swift #sprite-kit
#swift #набор спрайтов
Вопрос:
Как правильно выполнить инициализацию с помощью swift с помощью SpriteKit?
Это компилируется, но я получаю сообщение об ошибке, как только симулятор начинает работать. «swift_reportUnimplementedInitializer»
import SpriteKit
class GameScene: SKScene {
var paddlePositionUpdate:CGPoint
init(paddlePositionUpdate:CGPoint){
self.paddlePositionUpdate = CGPoint.zeroPoint
super.init()
}
}
Комментарии:
1. Я выяснил, что я мог бы использовать для хранения значения. Я только что создал словарь. Не очень красиво, но это работает!!! Спасибо, Рошан!!! настройки игры в var:Dictionary = [«paddlePositionUpdate»:CGPoint.zeroPoint]
Ответ №1:
Назначенный инициализатор для SKScene
— это init(size)
где size
— размер вашей сцены. Вы пытались использовать init()
то, чего не существует.
Вы можете увидеть точную сигнатуру метода, если нажмете на SKScene
…
РЕДАКТИРОВАТЬ: попробуйте что-то вроде
class GameScene: SKScene {
var paddlePositionUpdate: CGPoint
init(size: CGSize, paddlePosition: CGPoint = CGPoint.zeroPoint){
paddlePositionUpdate = paddlePosition
super.init(size)
}
}
Сцена должна быть инициализирована размером…
Комментарии:
1. возможно, я иду по этому неправильному пути. Все, что мне нужно, это использовать переменную point в качестве держателя места для перемещения объекта paddler.
2. breakoutIphone /GameScene.swift: 11: 11: неустранимая ошибка: использование нереализованного класса инициализатора GameScene: SKScene { var paddlePositionUpdate: CGPoint init(размер: CGSize, расположение весла: CGPoint = CGPoint.zeroPoint){ paddlePositionUpdate = paddlePosition super.init(размер:self.size) } }
3. Я думаю, что я получал ошибку. Не все работает. Спасибо за вашу помощь.
4. @masters3d Я не понимаю, почему вы используете ‘super.init(size:self.size)’ в своих комментариях. Разве это не должно быть ‘super.init(size: размер)’ ?
Ответ №2:
У меня была похожая проблема при замене сцены на другую, используя
let gameScene = GameScene(size: self.size)
self.view.presentScene(gameScene)
И я продолжал получать 2 ошибки об инициализации:
// Error #1
'GameScene' is not constructible with '(size: @lvalue CGSize)'
// Error #2
Class 'GameScene' has no initializers
Чтобы исправить ошибку # 1, просто замените GameScene(size: self.size)
на GameScene.sceneWithSize(self.size)
Ошибка # 2, похоже, зависит от того, как инициализируется свойство. Например, если бы я написал:
class GameScene: SKScene {
var test: CGPoint
// ...
}
Ошибка # 2 все еще была там. Но если я заменил var test: CGPoint
на var test: CGPoint!
, var test = CGPoint(0,0)
или любые другие строки, которые могут давать test
определенное значение, ошибка # 2 исчезла. Я искал в руководстве, но нашел множество классов, использующих такие строки, как var test: CGPoint
. И здесь я запутался.
Возможно, это распространенная проблема для новичков Swift, и я надеюсь, что мое временное решение поможет.