无法将SKNode从.sks文件强制转换为自定义类



如何将sks文件SKNode转换为该节点的子类?这里有同样的问题,它说在sks编辑器中设置自定义类和模块,但这个答案不起作用!

我已经在SpriteKit场景编辑器中使用空节点作为组成飞船的零件的根,构建了一个在空SKNode下作为父级的SKSpriteNodes集合。根SKNode.name设置为"ship",自定义类字段设置为"BasicShip",这是我试图转换到的类。模块设置为项目名称(在构建设置中确认为模块名称)

我正在使用自定义的SKNode子类来为船添加动力学,例如推力功能等。

通过childNodeWithName()检索节点会返回一个Optional(SKNode),而不是我的自定义类。将返回的节点强制转换为我的自定义类会编译,但在运行时崩溃。

检查didMoveToView()中的场景节点会将"ship"节点显示为通用SKNode,因此自定义类不会接收sks文件,也不能在运行时将其强制转换为一个。

let world = self.childNodeWithName("world")
let ship = world!.childNodeWithName("ship") as! BasicShip
ship.thruster1.throttle = 0.5
ship.thruster2.throttle = 0.5

以消息结束:Could not cast value of type 'SKNode' (0x1001dcc60) to 'Lander001.BasicShip' (0x10000f2a0).我的自定义类继承自SKNode,所以强制转换应该不是问题,对吧?

(xcode 7.2.1,osX 10.10<-这可能是osX与iOS的对比吗?我最终想在两者上运行。)

我相信在world内部还有另一个以ship为名称的节点。这就是你正在检索的。检查您的项目并确保您没有将另一个名为shipSKNode添加到世界中。

最新更新