我遇到了这个问题,无法解决,我不太了解解包变量的文档
var ladybug: SKNode = SKNode.childNodeWithName("ladybug")
错误:(字符串!)-> SKNode!不能转换为“SKNode”
谢谢
我遇到了这个问题,无法解决,我不太了解解包变量的文档
var ladybug: SKNode = SKNode.childNodeWithName("ladybug")
错误:(字符串!)-> SKNode!不能转换为“SKNode”
谢谢
childNodeWithName
不是类方法。你在一个实例上调用它,而不是SKNode
类本身。
如果您在SKScene
子类中编写此代码,则您要调用此方法的实例可能是self
.
该方法工作正常:
var sprite = SKNode()
var ladybug: SKNode! = sprite.childNodeWithName("ladybug")
但是您需要在 SKNode 的实例上调用该方法,而不是 SKNode 本身。
childNodeWithName 返回一个可选的 SKNode!。使用类型推断并记住,您必须从其父节点(通常是自身,SKScene)中检索节点
let ladybug = self.childNodeWithName("ladybug")
这就是你创建精灵时的样子
let ladybug = SKSpriteNode(ImageNamed:"ladybug.png")
labybug.name = "ladybug"
self.addChild(ladybug)
尝试对对象使用 let 而不是 var。您可以毫无问题地修改其属性,但最好使用常量。