Class GameScene : SKScene {var stage : Int?overrIDe init(size: CGSize) { super.init(size: size)}required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented")}convenIEnce init?(filenamed: String,stage: Int) { self.init(filenamed: filenamed) // Compiler error-- Argument labels '(filenamed:)' do not match any available overloads self.stage = stage}
我发现的另一个尝试建议作为解决方法:
Class GameScene : SKScene {var stage : Int?overrIDe init(size: CGSize) { super.init(size: size)}required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented")}convenIEnce init?(filenamed: String) { self.init(filenamed: filenamed) // Error at run time: EXC_BAD_ACCESS (code=2,address=0x16fc1bff0) }convenIEnce init?(filenamed: String,stage: Int) { self.init(filenamed: filenamed) self.stage = stage}
调试器显示无限循环的GameScene.init(filenamed:String) – > GameScene?
我该如何做到这一点?我需要继续我的生活! (和这个项目……)
解决方法 难道不是这么简单吗?if let gameScene = GameScene(filenamed: "GameScene") { self.gameScene = gameScene self.gameScene.stage = 1 self.gameScene.setupBasedOnStage() self.gameScene.scaleMode = .aspectFill self.gameScene.gameSceneDelegate = self.menuSceneDelegate as! GameSceneDelegate! self.vIEw?.presentScene(self.gameScene,Transition: SKTransition.reveal(with: .down,duration: 1.0)) }
您可以在显示页面之前设置舞台属性,如果需要,可以调用设置功能以根据舞台加载信息/图形.
我知道它并不像你想做的那样优雅,但也许有时最简单的答案是最好的?
总结以上是内存溢出为你收集整理的swift – 为SKScene创建一个自定义的initalizer,它会覆盖方便的init?(fileNamed :)全部内容,希望文章能够帮你解决swift – 为SKScene创建一个自定义的initalizer,它会覆盖方便的init?(fileNamed :)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)