- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个非常具体的问题。我曾经使用默认代码从 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
呈现时崩溃的原因有两个。
SKScene
呈现时,您创建了一个类型为 GameScene
的对象,但是当您从 UIViewController
呈现时,您创建了一个类型为 的对象>GKScene
.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/
我正在 Xcode 上创建一个 iOS Swift 游戏。该游戏是关于一个球,并在我的关卡的 SKS 文件中制作了一个带有纹理动画的移动(左和右)障碍物。在 SKS 文件中,当我单击场景编辑器正下方的
我正在尝试制作一个简单的 2D 平台游戏。我决定使用 SpriteKit 引擎提供的 Sprite ,而不是导入 Sprite :在 GameScene.sks 中,我拖放了一个 Sprite (简单
我们可以更改 GameScene(SKScene) 上 Scene.sks 文件的 Created 关卡吗? 如果你不明白我的意思,这里更详细: 我创建了 2 个 .sks 文件(例如 one.sks
由于我使用了很多节点,所以我一直在使用 GameScene.sks。节点已经放置,但现在我想用代码显示它们。为此,我使用以下代码: if let view = self.view as! SKView
我正在创建 SKSpriteNode 的子类,例如Player 并在我的 *.sks 文件中用自定义类 Player 标记一个 SKSpriteNode。在 *.swift 中,我使用以下方法加载节点
我有一个游戏,其中有两个场景:FarmScene 和 WoodScene。每个场景都有一个 .SKS 文件和一个 .swift 文件 - 一个用于设计,一个用于编码。我已经成功地从 FarmScene
我正在学习 Swift,并从 SpriteKit 开始。我正在尝试创建一个简单的游戏,并且有一个关于 SpriteKit 如何工作的问题。我创建了一个带有开始按钮的新场景 (MenuScene),我编
为了让我的游戏弹出窗口,我在 SKS 文件中手动创建了一堆标签节点: : 我不得不制作很多标签,因为它们没有多行属性。这是我实际运行代码时的样子。 我该怎么做才能解决这个问题,是否有简单的解决方法?
我在 didMoveToView() 中有以下代码,它依赖于 .sks 文件才能正常工作: if let camera : SKCameraNode = self.childNodeWithName(
我是 Swift 和 SpriteKit 的初学者。我有 gameViewController 代码: if let scene = IntroScene(fileNamed:"IntroScene"
我正在开发一款横版卷轴游戏,我目前正在将我的节点从 sks 链接到这样的类。但是,我确信必须有一种更清洁更有效的方法来执行此操作,因为我可以看到这个列表随着添加的节点越来越多而变得越来越庞大。将节点与
我有一颗星星的 .png 图片。我想用这张图片制作充满星星的动画字母。这就是我想做的(但是星星会在其中有点动画,我想这可以用粒子效果来完成): 我可以通过为每个字母使用可能的多个 sks 文件然后将它
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 7 年前。 Improve
我一直在使用 SpriteKit 使用 Xcode 6 GM 制作游戏,出于某种原因,我的一些 .SKS 粒子文件现在使 Xcode 崩溃,这使得它们无法打开。我还注意到,当使用 NSKeyedUna
我不小心将 Xcode 场景文件编辑器中的一个空节点移动到了我拥有世界节点的 0,0 坐标。 取消选择后,我意识到错误。 现在我无法重新选择它。它是世界节点的子节点,我只能选择世界节点。 Push t
到目前为止,我有一款游戏,一切似乎都运行良好。我只使用作为默认项目的基本 gamescreen.swift 以及它的 .sks 文件。在满足一定条件后(对手以一定的分数获胜),它会转换到 .sks 文
我正在查看 apple 的冒险项目,以了解他们如何在游戏中创造世界和其他事物。 查看 AdventureWorld.sks 文件,我看到它们有一堆不同的“墙”节点,这些节点位于背景图像中墙所在的顶部。
我在 Internet 上看到过这个概念,但找不到具体的操作方法。 我想在 .sks 文件中布置我的整个关卡,但在任何给定时刻只加载播放器/框架 View 中的内容。在我的游戏中,我有永远上下 flo
我正在使用 SpriteKit .sks 文件 我可以将 .sks 中的 Sprite 制作成 SKSpriteNode 子类的实例吗? 这是我的子类中的 init 方法: init(imag
我正在使用 spritekit 和 swift 制作游戏。我在 gamescene.sks 中添加了一堆石头用作障碍物,并希望石头在接触时消失。 gamescene sks 中的 body 类型定义太
我是一名优秀的程序员,十分优秀!