我正在创建一个2D等距城市建筑模拟,今天我有一种“最佳实践”问题而不需要特定的代码。 与所有城市建筑游戏一样,您可以放置建筑物,道路等。无论是否连接到道路,玩家都可以在任何地方放置建筑物。除此之外,还有一座建筑物(称为中心建筑物),所有建筑物都需要连接(通过公路)。 我需要处理这个问题而不做太多计算,这会打破FPS。
现在我为每个建筑物都有一个计时器工作,检查建筑物中一个被包围的瓷砖是否是道路。这很好,也适用于很多建筑物,因为检查很简单。 但现在我想检查与中心大楼的连接。要检查是否有必要(在我看来)使用像探路者这样的东西,它会检查其中一个被包围的瓷砖是否与中心建筑的一个包围瓷砖有道路连接。 我不能经常检查,因为这会将FPS完全打破到30或更低。我的想法是,如果建造或毁坏道路以“重新调整”道路连接,则发生事件。但是又出现了另一个问题......玩家可能会在地图中间找到一条道路而且建筑物彼此相距很远,所以我需要找到相关的建筑物,这也可能需要花费太多时间。
我的最后一个想法是创建类似计时器队列的东西并逐步完成这些项目,但在我继续使用试错法之前,我想问你一些想法。
真的很期待你的想法! Yheeky
答案 0 :(得分:0)
您可以让每个建筑物存储一个瓦片列表(路径),将其连接到中心建筑物。然后,当玩家随机销毁一块瓷砖时,您可以对每个建筑物进行测试,看看它是否通过该公路瓷砖进行了修补。
或者你可以让每个道路瓷砖存储哪些建筑物需要它,所以当瓷砖被摧毁时你会让建筑物立即抛出旗帜。这可能会变得非常混乱,但是它可以适当地用于后台速度清理调用。
这两种方法都很混乱。也许你可以规定玩家不能放置道路,除了在其他道路旁边或中心大楼旁边。然后,当玩家删除道路拼贴时,执行油漆式填充,以破坏所有断开的道路。您还可以定期对瓷砖进行随机检查,看看它们是否被非法放置,但如果您小心,则不需要这样做。