ios - 在设备上运行时不出现 SKEmitterNode
问题描述
在过去的几天里,我一直在使用 Hacking With Swift 教程(特别是 Project 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 函数中使用以下代码来挂钩我放置在 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
}
我在本教程的帮助下找到了这个解决方案
解决方案
查看代码并在 Xcode 中尝试它,似乎它可能没问题....它在我的身上运行良好,但我的粒子发射器分布广泛,几乎看不到......
尝试将 x 位置更改为屏幕中间:512。
这是将发射器定位到屏幕上不可见的部分导致问题的原因。
您也可以调整点差以使其从该位置可见,但您说您是新手,最可能的原因是 x 位置放置。
编辑:
好的,您似乎只是忘记了创建粒子。只需点击 File < New < File 然后点击 SpriteKit Particle Emmitter,选择你想要的模板,最后确保你给粒子的名字和你在代码中命名的名字一样,反之亦然。
推荐阅读
- snowflake-cloud-data-platform - 以 Parquet 格式将 Snowflake 表数据卸载到 S3
- java - 在 Windows 10 PC 中启动 cassandra 时出错
- javascript - 如何在没有组件的情况下为唯一的本地存储事件使用函数?
- firebase - 如何在 Flutter 中的 Firebase 中创建新用户
- mysql - 用户数据未在 MySQL 中运行命令
- php - 在 PHP 文件中嵌入 Gmail OAuth API 功能让我出现空白屏幕
- volume - 向之字形添加音量
- django-rest-framework - 在 django 视图集中删除记录后插入不起作用
- mongodb - 查询查找其成员与给定字符串完全匹配的组
- c# - 为什么 Entity Framework 在我的 .NET Core 类库中生成无效的 DbContext 类?