繁体   English   中英

无法构建游戏场景,因为它没有可访问的初始化程序

[英]Game Scene cannot be constructed because it has not accessible initializers

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: PassengerNode!替换let passenger = SKSpriteNode(imageNamed: "passenger") let passenger: PassengerNode! 编译器将抛出编译器错误“由于无法访问初始化程序,因此无法构建游戏场景”。 当我更改要声明让乘客的方式时,就会显示此错误。 我要更改它的原因是,我想将其替换为一个类,以便乘客a。 可以具有不同的类型和不同的纹理(可以用不同的方法解决)b。 可以从父级中删除,然后再次添加-希望没有错误。

你有什么主意吗? 我真的被某种方式卡住了:-?

如果只声明其类型而没有初始值的乘客,则需要在类中添加init(),因为编译器不知道在创建对象时要赋予其初始值。

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

let passenger: PassengerNode! = nil

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM