gpt4 book ai didi

ios - 在设备上运行时不出现 SKEmitterNode

转载 作者:可可西里 更新时间:2023-11-01 01:57:25 27 4
gpt4 key购买 nike

过去几天,我一直在使用 Hacking With Swift 教程(特别是项目 23)学习在 Swift 中使用 Spritekit。我正在学习如何使用 SKEmitterNodes,但它们似乎从未出现过。在运行时,屏幕是空白灰色,以 1 fps 的速度运行,屏幕上有 1 个节点(假设是 SKEmitterNode)。我试过更改节点的 zPosition,但它似乎没有任何效果。奇怪的是,SKSpriteNodes 和 SKLabelNodes 看起来很好。我清理了项目并删除了 GameScene.sks 中的“Hello World”,所以我知道默认项目中没有任何内容。我已经广泛搜索了这个问题的答案,但我一无所获。下面是有问题的代码。

    import SpriteKit
import GameplayKit

class GameScene: SKScene, SKPhysicsContactDelegate {
override func didMove(to view: SKView) {
//backgroundColor = UIColor.black

if let starfield = SKEmitterNode(fileNamed: "Starfield.sks") {
starfield.position = CGPoint(x: 1024, y: 384)
starfield.advanceSimulationTime(10)
addChild(starfield)
starfield.zPosition = 0
}

编辑:好的伙计们,我已经解决了。事实证明,当您尝试以编程方式专门添加 SKEmitterNode 时,Xcode 不喜欢它(与它似乎处理得很好的 SKSpriteNodes 相反)。我要做的是进入 GameScene.sks 并手动添加我的 Starfield.sks 文件,然后将其重命名为 Starfield。然后我必须进入 GameScene.swift 文件并通过在 didMove 函数中使用以下代码来 Hook 我放置在 GameScene.sks 编辑器中的 SKEmitterNode:

starfield = childNode(withName: "Starfield") as? 
SKEmitterNode

现在新代码看起来像这样:

var starfield: SKEmitterNode!

override func didMove(to view: SKView) {
backgroundColor = UIColor.black

starfield = childNode(withName: "Starfield") as?
SKEmitterNode
starfield?.position = CGPoint(x: 1024, y: 384)
starfield?.advanceSimulationTime(10)
starfield?.zPosition = -1
}

我在 this 的帮助下找到了这个解决方案教程

最佳答案

查看代码并在 Xcode 中尝试它,似乎它可能没问题......它在我的上运行良好,但我的粒子发射器分布广泛且几乎看不见......

尝试将 x 位置更改为屏幕中间:512。

导致问题的原因是发射器定位到屏幕上不可见的部分。

您也可以调整点差以使其从该位置可见,但您说您是新手,最可能的原因是 x 位置放置。

编辑:

好吧,看来您只是忘记了创建粒子。只需点击 File < New < File 然后点击 SpriteKit Particle Emmitter,选择一个你想要的模板,最后确保你给粒子的名称与你在代码中命名的名称相同,反之亦然。

关于ios - 在设备上运行时不出现 SKEmitterNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50880077/

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