我目前正在使用Cocos2D进行游戏,我需要暂停/恢复一些粒子系统才能进行优化。
我该怎么做?
我知道我可以使用[particleSystem unscheduleUpdate]和[particleSystem scheduleUpdate],但是如何检查是否已安排更新?
我想暂停屏幕外的所有粒子系统,并在它们返回视野时恢复它们,所以当我移动视口时,我正在遍历粒子系统。
particleSystem.active似乎没有给我所需的标志来检查系统是否正在更新......
我在这里缺少什么?
答案 0 :(得分:4)
您不应安排或取消安排粒子系统的更新方法或任何其他内部类。问题在于可能有其他预定的方法(即按优先级或间隔安排)然后继续运行。
相反,您应该使用CCScheduler类的pauseTarget和resumeTarget暂停/恢复类实例的更新:
[[CCScheduler sharedScheduler] pauseTarget:particleSystem];
[[CCScheduler sharedScheduler] resumeTarget:particleSystem];
这将暂停/恢复所有预定的方法,而不仅仅是常规更新方法。
您还可以检查目标的预定方法是否已暂停:
[[CCScheduler sharedScheduler] isTargetPaused:particleSystem];
答案 1 :(得分:1)
我使用的另一个技巧是setEmissionRate()函数。 暂停粒子系统:
setEmissionRate(0);
恢复粒子系统:
setEmissionRate(latestValue);
我希望这对你有好处:)