Spritekit - 如何从场景的父类呈现场景?

问题描述

我目前正在尝试创建一些我自己的自定义类。其中两个是继承典型SKSpriteNode的自定义按钮和继承SKScene的自定义菜单场景。我的目标是让按钮类具有 parentScene 属性和 targetScene 属性。当按钮被触摸时,它会调用菜单场景类中的一个函数来呈现新场景。

按钮类:

class Button : SKSpriteNode{
    
    var parentScene : MenuScene
    var targetScene : SKScene
    override init(texture: SKTexture?,color: UIColor,size: CGSize) {
        self.parentScene = MenuScene()
        self.targetScene = SKScene()
        super.init(texture: texture,color: color,size: size)
        self.isUserInteractionEnabled = true
    }
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    override func touchesBegan(_ touches: Set<UITouch>,with event: UIEvent?) {
        for touch in touches{
          print("Touched Button")
            parentScene.moveScenes(targetScene)
        }
    }
}

菜单类:

class MenuScene : SKScene{
    
    func moveScenes(_ targetScene : SKScene){
        print("attempt")
        let newScene = targetScene
        newScene.scaleMode = self.scaleMode
        let animation = SKTransition.fade(withDuration: 0.5)
        self.view?.presentScene(newScene,transition: animation)
    }
}

游戏场景:

class GameScene: MenuScene {
    
    override func didMove(to view: SKView) {
        let newButton = Button()
        newButton.size = CGSize(width: 300,height: 300)
        newButton.color = .blue
        newButton.parentScene = GameScene()
        newButton.targetScene = Menu2(size:self.size)
        newButton.position = CGPoint(x: 0,y: 0)
        addChild(newButton)
    }
}

当我运行它并点击按钮时,没有任何反应。没有任何崩溃,也没有出现新场景。我知道当我单击按钮时,它会到达 moveScenes 函数,因为控制台会打印“尝试”。没有抛出任何错误,所以我不知道从这里开始做什么。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...