Ios Swift 4.2-类型值';(u_______________;()->;(uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;没有成员';子节点';

Ios Swift 4.2-类型值';(u_______________;()->;(uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;没有成员';子节点';,ios,swift,xcode,sprite-kit,Ios,Swift,Xcode,Sprite Kit,我在swift中创建了一个自定义类,用于管理我正在制作的游戏的主菜单。我将其链接到SKScene文件,并尝试创建一个常量来访问变量,但出现以下错误:无法在属性初始值设定项中使用实例成员“childNode” import SpriteKit import GameplayKit class MainMenu: SKScene { let startGameButton:SKSpriteNode = self.childNode(withName: "SpriteName")

我在swift中创建了一个自定义类,用于管理我正在制作的游戏的主菜单。我将其链接到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?) {

    }
}
导入SpriteKit
导入游戏工具包
类主菜单:SKScene{
让startGameButton:SKSpriteNode=self.childNode(名称为“SpriteName”)
覆盖func TouchesBegind(Touchs:Set,带有事件:UIEvent?){
}
}

有人知道发生了什么吗?如果没有,则有另一种访问精灵的方法。

让变量的初始值必须是常量,可以在执行
init()
方法之前进行初始化。这反过来意味着他们不能引用
self

一种解决方法是使它们成为惰性的实例变量,这些变量在第一次使用时被初始化(根据定义,在
init()
返回对对象的引用之前是不可能发生的)。在这种情况下,惰性变量将使用闭包的结果进行初始化

更改:

let startGameButton:SKSpriteNode = self.childNode(withName: "SpriteName")


必须在方法内部运行该行。
lazy var startGameButton:SKSpriteNode = self.childNode(withName: "SpriteName") as! SKSpriteNode