gpt4 book ai didi

ios - 播放完毕后,我是否必须从父级手动移除发射器节点?

转载 作者:搜寻专家 更新时间:2023-11-01 05:41:56 25 4
gpt4 key购买 nike

我目前会在我的 Sprite 与游戏中的另一个 Sprite 发生碰撞时显示粒子效果。

我有这段代码:

let sparkParticle = SKEmitterNode(fileNamed: "SparkParticle.sks")
if sparkParticle.parent == nil
{
sparkParticle.position = mySprite.position
self._particleLayer.addChild(sparkParticle)
}
sparkParticle.resetSimulation()

我创建的粒子有 1000 个粒子的出生率,最大值为 100。我将粒子发射器节点的位置设置为我的 Sprite 当前在屏幕上的位置。然后,我将其添加为粒子层节点的子节点。

我的问题是,粒子发射器节点完成后是否必须手动从其父节点移除?还是 Sprite Kit 播放完后会自动移除?

由于我的项目旨在让 Sprite 相互碰撞很多,我想确定我是否仍然需要手动处理这个以防止内存泄漏(粒子层有很多已完成的子发射器节点已经开始播放了)

最佳答案

我实际上建议您移除发射器。我最近在我的游戏中遇到一个问题,因为我没有移除发射器,它会开始非常严重地滞后。这是一个问题,当添加发射器时我能够 100% 重现,所以我知道它们是帧速率下降的唯一原因。在我开始看到延迟之前,大约需要 20 个未移除的发射器。

其实很简单。您可以创建一个 SKAction 序列,其中包含一个等待 Action (1 秒或稍微超过您的效果长度)和一个 removeFromParent Action 。

这将在它完成后立即摆脱它,并确保您的帧率不会下降。

关于ios - 播放完毕后,我是否必须从父级手动移除发射器节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28307265/

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