gpt4 book ai didi

swift - 从另一个无法从 SKS 文件加载的 SKScene 呈现的 SKScene

转载 作者:行者123 更新时间:2023-11-28 06:21:42 27 4
gpt4 key购买 nike

我有一个非常具体的问题。我曾经使用默认代码从 View Controller 呈现我的游戏场景。但是,我添加了另一个 SKScene,现在使用以下代码展示我的游戏场景:

//In an SKScene (not Game scene)
let scene = GameScene()
let skView = self.view!
skView.ignoresSiblingOrder = true
scene.scaleMode = .aspectFit
let push = SKTransition.push(with: SKTransitionDirection.right, duration: 0.4)
skView.presentScene(scene, transition: push)

我的问题是我的游戏场景似乎不再像运行代码行时那样识别我的 SKS 文件:

//in gamescene
sprite = self.childNode(withName: "sprite") as! SKLabelNode

展开时没有找到任何东西。当我使用代码从 GameViewController 展示我的 SKScene 时:

if let scene = GKScene(fileNamed: "GameScene") {

// Get the SKScene from the loaded GKScene
if let sceneNode = scene.rootNode as! GameScene? {

// Copy gameplay related content over to the scene
sceneNode.entities = scene.entities
sceneNode.graphs = scene.graphs

// Set the scale mode to scale to fit the window
sceneNode.scaleMode = .aspectFit

// Present the scene
if let view = self.view as! SKView? {
view.presentScene(sceneNode)

view.ignoresSiblingOrder = true
}
}
}

一切正常。我究竟做错了什么?提前致谢。

最佳答案

我认为当您从 SKScene 而不是从 UIViewController 呈现时崩溃的原因有两个。

  1. 您正在创建 2 个不同的类,它们可能具有不同的代码。当您从 SKScene 呈现时,您创建了一个类型为 GameScene 的对象,但是当您从 UIViewController 呈现时,您创建了一个类型为 的对象>GKScene.
  2. 当您创建 GameScene 类型的对象时,您使用的初始化器没有考虑附加的 SKS 文件。但是,当您创建 GKScene 类型的对象时,您会这样做。

因此,我将第一段代码编辑为:

//In an SKScene (not Game scene)
if let sceneContainer = GKScene(fileNamed: "GameScene") {
let skView = self.view!
skView.ignoresSiblingOrder = true
//Something comparable to the following line. I don't have a project set up, but let the compiler run you through the exact syntax.
let scene = sceneContainer.rootNode as! GameScene?
scene?.scaleMode = .aspectFit
let push = SKTransition.push(with: SKTransitionDirection.right, duration: 0.4)
skView.presentScene(scene!, transition: push)
}

可以找到从 GKScene 获取 SKScene 的文档 here .

关于swift - 从另一个无法从 SKS 文件加载的 SKScene 呈现的 SKScene,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43241064/

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