Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了swift – 为SKScene创建一个自定义的initalizer,它会覆盖方便的init?(fileNamed :)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在尝试创建一个方便初始化程序来覆盖方便初始化? SKScene中的(fileNamed :)初始化程序,以便我可以将一些初始值传递给场景,同时取消归档.sks文件.问题是,当我尝试这样做时,似乎SKScene(GameScene)的子类无法看到方便的init?超类的(fileNamed :).以下是我的一些尝试: Class GameScene : SKScene { var stage :
我正在尝试创建一个方便初始化程序来覆盖方便初始化? SKScene中的(fileNamed :)初始化程序,以便我可以将一些初始值传递给场景,同时取消归档.sks文件.问题是,当我尝试这样做时,似乎SKScene(GameScene)的子类无法看到方便的init?超类的(fileNamed :).以下是我的一些尝试:

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 :)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: