【问题标题】:(Cocos2d) Where to place autoRemoveOnFinish when using a particle system?(Cocos2d) 使用粒子系统时 autoRemoveOnFinish 放置在哪里?
【发布时间】:2012-06-15 06:45:59
【问题描述】:

我在我的游戏中为我的足球创建了一个火焰粒子系统,我想知道我应该在哪里放置优化代码 (autoRemoveOnFinish)。我现在就是这样做的。

界面

CCParticleSystem        *_fire;
@property (readwrite,retain) CCParticleSystem *fire;

实施

self.fire = [CCParticleSystemQuad particleWithFile:@"fire.plist"];
self.fire.position = cpv(self.contentSize.width * .5, self.contentSize.height * .5);
self.fire.positionType = kCCPositionTypeGrouped;
_fire.autoRemoveOnFinish = YES;
[self addChild:_fire z:0];

如果我这样做是正确的,为什么 fps 会下降到 25 左右。我一次只允许在屏幕上创建 5 个足球。

【问题讨论】:

    标签: cocos2d-iphone


    【解决方案1】:

    无论何时何地启用 autoRemoveOnFinish 都无关紧要。重要的一点是,这只适用于一次性效果,例如 CCParticleExplosion。一次性效果的持续时间属性设置为正值。

    如果您遇到帧率问题,我敢打赌,totalParticles(字形设计器中的最大粒子数)值设置得太高了。您可能只运行了 5 个粒子效果,但每个粒子系统可能会产生数百个粒子。

    每个粒子的大小(分别是其纹理)也对性能有很大影响。

    【讨论】:

    • 那么你是说 autoRemoveOnFinish 不会为我做任何事情?如果是这样,如果我保持原样,是否还有另一种方法可以提高效率?足球上的每个火发射器都有大约 200 到 300 个粒子。是不是太多了?
    • 可能,但您的设备显然会成为评判者。尝试降低粒子数量,看看会发生什么。
    • 我将发射的粒子数量从 200 更改为 100,我使用的纹理大小只有 4KB。在屏幕上同时出现 5 个足球时,我仍然会降至 30 fps 的低速。这和我想得到的一样好吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 2019-03-29
    • 1970-01-01
    相关资源
    最近更新 更多