我迅速创建了一个自定义类来管理我正在制作的游戏的主菜单,并将其链接到SKScene文件,并尝试创建一个常量来访问变量,但出现此错误:无法在实例中使用实例成员'childNode'属性初始化器。
import SpriteKit
import GameplayKit
class MainMenu: SKScene {
let startGameButton:SKSpriteNode = self.childNode(withName: "SpriteName")
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
}
}
有人知道发生了什么吗?如果没有,还有另一种访问精灵的方法。
最佳答案
let
变量的初始值必须是可以在执行init()
方法之前初始化的常量。这意味着他们不能引用self
。
一种解决方法是使它们成为lazy
实例变量,这些变量在首次使用时会被初始化(根据定义,在init()
返回对该对象的引用之前是不可能发生的)。在这种情况下,惰性变量将使用闭包的结果进行初始化。
更改:
let startGameButton:SKSpriteNode = self.childNode(withName: "SpriteName")
至
lazy var startGameButton:SKSpriteNode = self.childNode(withName: "SpriteName") as! SKSpriteNode
关于ios - Swift 4.2-类型'(____)->()->(____)'的值没有成员'childNode',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51698434/