我正在尝试对SKSpriteNode进行子类化,以使我的游戏代码更加简洁,但显然我没有理解其中的某些内容。以下是一个非常简单的示例:我创建了一个名为Alien.swift
的新Swift文件,其内容如下:
import SpriteKit
class Alien: SKSpriteNode {
}
在我的游戏中,我做:
let alienSprite: Alien = Alien()
print("It's an \(alienSprite)")
我得到了以下输出:
这是一个(SKSpriteNode) 名称为:'(null)...'
Xcode甚至说它是“aliensSprite”:
为什么在运行时没有打印出它是'alienSprite'?
编辑:将我的一个评论合并到这里 - 我实际上从我的.sks文件中提取精灵,在场景编辑器中放置它并设置其自定义类。我尝试用以下方式提取它:
let alien = childNodeWithName("alien") as! alienSprite
但是我收到了错误提示:
Cannot cast SKSpriteNode to alientSprite
print(type(of: alienSprite))
(Swift 3)或print(alienSprite.dynamictype)
(Swift 2)来检查类。 - Martin Rprint(alienSprite.dynamicType)
适用于 Swift 2。- 投票关闭此问题,因为它已经无法再现。 - Martin R