无法将“SKSpriteNode”类型的值转换为myApp.CustomSprite

时间:2017-01-07 12:55:25

标签: swift sprite-kit

我是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并保存,但它没有更改或修复错误。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用可选绑定替换代码:

if let sprite = self.childNode(withName: "//mainPlayer") as? CustomSprite {
           mPlayer = sprite
           // do whatever you want with your mPlayer
}

" // "在mainPlayer之前指定搜索应该从根节点开始并在整个节点树中递归执行。否则,它从当前位置执行递归搜索。您可以找到更多详细信息here