我目前正在用Cocos2D制作一个游戏,我需要暂停/恢复一些粒子系统以进行优化。
我该怎么做呢?
我知道我可以使用particleSystem unscheduleUpdate和particleSystem scheduleUpdate,但如何检查是否已安排了更新?
我希望暂停屏幕外的所有粒子系统,并在它们重新进入视图时恢复它们,因此当我移动视口时,我会在粒子系统中循环。
particleSystem.active似乎没有给我想要的标志来检查系统是否正在更新……
这里我漏掉了什么?
发布于 2011-11-03 23:44:06
不应计划或取消计划粒子系统或任何其他内部类的更新方法。这样做的问题是,可能会有其他调度的方法(即,使用优先级或间隔调度),然后会继续运行。
相反,您应该使用CCScheduler类的pauseTarget和resumeTarget暂停/恢复类实例的更新:
[[CCScheduler sharedScheduler] pauseTarget:particleSystem];
[[CCScheduler sharedScheduler] resumeTarget:particleSystem];这将暂停/恢复所有计划的方法,而不仅仅是常规的更新方法。
您还可以检查目标的调度方法是否已暂停:
[[CCScheduler sharedScheduler] isTargetPaused:particleSystem];发布于 2014-08-11 03:37:23
我使用的另一个技巧是setEmissionRate()函数。要暂停粒子系统,请执行以下操作:
setEmissionRate(0);
要恢复粒子系统,请执行以下操作:
setEmissionRate(latestValue);
我希望这对你有好处:)
https://stackoverflow.com/questions/7997272
复制相似问题