2

我目前正在用 Cocos2D 制作游戏,我需要暂停/恢复一些粒子系统以进行优化。

我怎样才能做到这一点?

我知道我可以使用 [particleSystem unscheduleUpdate] 和 [particleSystem scheduleUpdate],但是如何检查是否已经安排了更新?

我想暂停所有不在屏幕上的粒子系统,并在它们重新出现时恢复它们,所以当我移动我的视口时我正在循环我的粒子系统。

particleSystem.active 似乎没有给我所需的标志来检查系统是否正在更新......

我在这里想念什么?

4

2 回答 2

4

您不应安排或取消安排粒子系统的更新方法或任何其他内部类。问题在于可能有其他计划的方法(即按优先级或间隔计划)然后会继续运行。

相反,您应该使用 CCScheduler 类的 pauseTarget 和 resumeTarget 暂停/恢复类实例的更新:

[[CCScheduler sharedScheduler] pauseTarget:particleSystem];
[[CCScheduler sharedScheduler] resumeTarget:particleSystem];

这将暂停/恢复所有计划的方法,而不仅仅是常规的更新方法。

您还可以检查目标的预定方法是否已暂停:

[[CCScheduler sharedScheduler] isTargetPaused:particleSystem];
于 2011-11-03T15:44:06.197 回答
1

我使用的另一个技巧是 setEmissionRate() 函数。暂停粒子系统:

setEmissionRate(0);

恢复粒子系统:

setEmissionRate(latestValue);

我希望这对你有好处:)

于 2014-08-10T19:37:23.087 回答