我有一个Endless Runner游戏,滚动时我使用两个中等(约1500像素)节点进行滚动。
他们互相追随,|firstNode||secondNode|
他们每个人身上都有许多物体,树木,各种物理物体。
当其中一个离开屏幕时,我从中删除所有对象,将其重新连接到实际在屏幕上的节点的末尾,然后再次重新创建所有对象 - 在其中一个随机预设中。
但是有一个问题,当我重新创建节点的对象时,我会遇到小的滞后,就像0.1秒一样,这会让我的物理关闭,玩家经常死亡。
如何让游戏在物体再生过程中不会延迟?
我尝试使用GCD在另一个线程中重新创建该东西,但由于我使用了连接和引脚连接而失败,因此需要在主线程中执行此操作。
我还想过在某处预先缓存那些预设部件,但是由于我将关节连接到实际的物理世界,这似乎是不可能的。我还需要重新创建玩家可能选择的硬币。
我该如何解决这个问题?如何在实时重建大量对象时消除延迟?
答案 0 :(得分:2)
您应该实现对象的池化。
预先创建所有对象,然后根据需要管理重用它们。当您需要一个物体时,从池中取出它。完成后,将其返回池
冲洗,重复。就池大小而言,基于一次需要多少给定对象。