我是Swift和SpriteKit的新手所以请耐心等待。 我正在尝试创建一个简单的游戏,我创建了一个自定义类(CustomSprite):
import UIKit
import SpriteKit
class CustomSprite: SKSpriteNode {
var spriteColor: String = ""
}
CustomSprite只有spriteColor用于检查原因(游戏后期) 我正试图在GameScene中创建一个新的精灵:
var mPlayer: CustomSprite = CustomSprite()
override func didMove(to view: SKView) {
//crashes here (mPlayer = self. xxxxxx)
mPlayer = self.childNode(withName: "mainPlayer") as! CustomSprite
mPlayer.spriteColor = "red"
}
运行游戏并进入didMove时出现此错误:
Could not cast value of type 'SKSpriteNode' to 'myApp.CustomSprite'
我不明白为了解决这个问题我必须做些什么,以及为什么会这样。
我确实将.sks
文件中的自定义类设置为CustomSprite并保存,但它没有更改或修复错误。
答案 0 :(得分:1)
您可以尝试使用可选绑定替换代码:
if let sprite = self.childNode(withName: "//mainPlayer") as? CustomSprite {
mPlayer = sprite
// do whatever you want with your mPlayer
}
" // "在mainPlayer
之前指定搜索应该从根节点开始并在整个节点树中递归执行。否则,它从当前位置执行递归搜索。您可以找到更多详细信息here