我不确定这是否是一个错误,但即使我在其中一个 Sprite 上设置了自定义类名称,它似乎也被完全忽略了。
我尝试使用拖动的资产,然后使用空节点,两者都完全忽略了 Monkey 类关联,只是创建了一个原始 SKSpriteNode。
Monkey 节点代码如下。
import Foundation
import SpriteKit
class Monkey: SKSpriteNode{
let monkeyWalkAtlas = SKTextureAtlas(named: "MonkeyWalk")
override init(texture: SKTexture?, color: NSColor, size: CGSize) {
super.init(texture: texture, color: color, size: size)
print("Monkey.init debug")
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
注意:.sks 节点上的自定义类在 xcode7 中是新的。
2015 年 6 月 21 日编辑
我简化了设置,但仍然是在 iOS9 模拟器中编译/运行的问题。我使用默认 SpriteKit 模板创建了一个项目,将 GameSence 更改为仅具有以下内容(以及空的 Monkey 类)
import SpriteKit
class GameScene: SKScene {
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
print("touch down")
/* Called when a touch begins */
for node in self.children {
print(node)
}
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
}
}
public class Monkey: SKSpriteNode {}
在 GameScene.sks 上拖了一个 Empty 节点,将自定义类设置为 Monkey,但是当我按下打印子节点时,我又得到了:
touch down
<SKSpriteNode> name:'SKNode_0' texture:['nil'] position:{753.5, 333.5} scale:{1.00, 1.00} size:{0, 0} anchor:{0, 0} rotation:0.00