Я пытаюсь дать своему главному герою пользовательский класс, чтобы я мог определить все его поведение внутри определенного класса.
Я уже делал что-то подобное, используя протоколы:
protocol CustomNodeEvents{
func didMoveToScene()
}
Этот протокол находится в файле GameScene перед началом занятия. Затем я вызываю такую функцию в классе GameScene:
override func didMove(to view: SKView) {
if let customnode = player as? CustomNodeEvents{
customnode.didMoveToScene()
}
}
Где игрок определяется как:
player = self.childNode(withName: "//player") as! SKSpriteNode
также внутри функции didMove(для просмотра: SKView).
Теперь я создал еще один файл (мой собственный файл класса) и пишу:
import SpriteKit
class Custom: SKSpriteNode, CustomNodeEvents{
func didMoveToScene() {
print("It Worked")
}
}
У меня нет никаких ошибок, но на самом деле он не запускает блок кода внутри моего пользовательского класса (в файле GameScene.sks я уже привязал класс к проигрывателю).
Мой вопрос в том, как я могу заставить его работать? И второй вопрос: это лучший способ определить пользовательский класс и «связать» его с другими классами?
РЕДАКТИРОВАТЬ:
class GameScene: SKScene {
var player: SKSpriteNode!
override func didMove(to view: SKView) {
player = self.childNode(withName: "//player") as! SKSpriteNode
if let customnode = player as? CustomNodeEvents{
customnode.didMoveToScene()
}
player = self.childNode(withName: "//player") as! Custom
. Если это не удается, то мы знаем, в чем проблема - person Knight0fDragon   schedule 19.10.2016if let customnode = player as? CustomNodeEvents{ customnode.didMoveToScene() } } else { print("Error casting customnode")}
Вы также можете использоватьassert
, чтобы он вылетал на правильной строке - person Knight0fDragon   schedule 19.10.2016didMove( to view)
- person Knight0fDragon   schedule 19.10.2016