gpt4 book ai didi

swift - 在 swift 3 Spritekit 中返回上一个 View 时出错

转载 作者:搜寻专家 更新时间:2023-10-31 19:28:37 24 4
gpt4 key购买 nike

当我从我的菜单场景切换到我的游戏场景时,它运行得非常好。但是,当我试图回去时,这是一场灾难。我得到:在展开 Optional 值时意外发现 nil。返回的代码是:

let menuscene = MenuScene(size: self.size)
menuscene.scaleMode = scaleMode
self.view?.presentScene(menuscene)

它说错误来自的代码是:

PlaygamebtnNode = self.childNode(withName: "PlaygamebtnNode") as! SKSpriteNode
NamelblNode = self.childNode(withName: "NamelblNode") as! SKLabelNode

这很奇怪,因为当游戏启动时,这段代码就没问题了。错误必须来自 View /场景的变化。 entrie MenuScene 类的代码是:

import SpriteKit
import GameplayKit

class MenuScene: SKScene {
var PlaygamebtnNode:SKSpriteNode!
var NamelblNode:SKLabelNode!

override func didMove(to view: SKView) {

PlaygamebtnNode = self.childNode(withName: "PlaygamebtnNode") as! SKSpriteNode
NamelblNode = self.childNode(withName: "NamelblNode") as! SKLabelNode


PlaygamebtnNode.texture = SKTexture(imageNamed: "Playgamebtn")
}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

let touch = touches.first

if let location = touch?.location(in: self){
let nodesArray = self.nodes(at: location)

if nodesArray.first?.name == "PlaygamebtnNode" {
let transition = SKTransition.flipHorizontal(withDuration: 0.5)

let nextScene = GameScene(size: self.size)
self.view?.presentScene(nextScene, transition: transition)
}
}
}
}

这不是普通的 found nil while unwrapping an Optional value question 的原因是因为它不会显示此错误,直到我尝试返回菜单。

最佳答案

问题从这一行开始:

PlaygamebtnNode = self.childNode(withName: "PlaygamebtnNode") as! SKSpriteNode 

因为正如我所说,self.childNode(withName:) 正在返回 nil

然而,真正的问题与这一行有关(在 leavegamefunc() 内部):

let menuscene = MenuScene(size: self.size)

您在 MenuScene.sks 中定义了您的 PlaygamebtnNode,并且您使用了错误的初始化程序 (MenuScene.init(size:))。

解决方法:

 func leavegamefunc() {
if let menuScene = MenuScene(fileNamed: "MenuScene"){
menuScene.scaleMode = scaleMode
self.view?.presentScene(menuScene)
}
}

关于swift - 在 swift 3 Spritekit 中返回上一个 View 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43753394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com