【问题标题】:Game Scene cannot be constructed because it has not accessible initializers无法构造游戏场景,因为它没有可访问的初始化程序
【发布时间】:2016-05-16 06:34:22
【问题描述】:

Xcode 出现错误,我不知道如何解决。也许有人可以给我一个帮助或一个好的提示?

这是在我的游戏场景中运行的代码:

var currentLevel: Int = 1

var platforms: PlatformsNode!
var platformNode1: PlatformNode!
var platformNode2: PlatformNode!
var platformNode3: PlatformNode!

var platformArray = [SKNode]()

let passenger = SKSpriteNode(imageNamed: "passenger")

var passengerNumber:Int = 1
var startPlatform =         [3, 3, 2, 1, 2]
var destinationPlatform =   [1, 1, 3, 2, 1]

// Level selection
class func level(levelNum: Int) -> GameScene? {
    let scene = GameScene(fileNamed: "Level\(levelNum)")! // <- compiler error
    scene.currentLevel = levelNum
    scene.scaleMode = .AspectFill
    return scene
}

只要我想更换 let passenger = SKSpriteNode(imageNamed: "passenger") 使用let passenger: PassengerNode!,编译器会抛出编译器错误“无法构造游戏场景,因为它没有可访问的初始化程序”。 当我改变我想要声明让乘客的方式时,这个错误就会出现。 我想改变它的原因是我想用一个类来代替它,这样乘客 一种。可以有不同的类型和不同的纹理(这可以用不同的方式解决) 湾。可以从父级中删除,然后再次添加 - 希望没有错误。

你有什么想法吗?我真的被卡住了:-?

【问题讨论】:

    标签: swift sprite-kit


    【解决方案1】:

    声明乘客只有它的类型并且没有初始值需要你添加一个 init() 到你的类,因为编译器不知道在创建对象时给它什么初始值。

    您可以创建一个 init() 并为乘客设置一个值或将其删除为

    let passenger: PassengerNode! = nil
    

    (这假设您的代码在确保将某些内容放入其中或在使用之前检查 nil/optional 之前未引用该变量)。

    【讨论】:

      猜你喜欢
      • 2021-09-21
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多