iphone - 塔防游戏中的多线程寻路

标签 iphone objective-c multithreading cocos2d-iphone

我正在制作一款塔防游戏,但我被困在寻路的多线程中。如果我不将寻路设置为 NSInitationOperation,那么我拥有的恶魔和塔越多,渲染的停顿就会越来越长。

但是我无法解决“锁定”问题。我在枚举我的恶魔 NSMutableArray 并对其进行变异时经常发生崩溃。如果我在寻路时尝试锁定主线程中的枚举,游戏仍然会锁定,并且我已经失去了多线程的全部意义..

如何解决此类问题?

最佳答案

想想当放置另一座塔时会发生什么。敌人要么必须在他们的路径决定中考虑新塔,要么不考虑。确定这些新路径需要时间,并且无论您选择哪种多线程解决方案,总体上都会导致延迟。问题最终在于你的寻路算法。如果计算时间太长,您就会看到延迟。

看看可以避免寻找这些路径的方法。在位置 (x,y) 放下塔会影响所有敌人吗?你能计算出几条路径,让敌人选择走哪一条吗?您可以缓存路径并重用已经计算过的部分(例如河流如何流过分支支流)吗?

我认为有很多方法可以减少路径查找对问题的影响。

关于iphone - 塔防游戏中的多线程寻路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4024574/

相关文章:

ios - 使用 NSDate 获取日期

iphone - 这些创建和处理数组的方法之间的基本区别是什么?

iphone - UIButton 的 IBAction 方法在 Swift 中延迟后执行

iphone - 通过在iphone sdk中解析获取城市名称

ios - 动态行高和 sizeWithAttributes 警告

objective-c - 将参数传递给沙箱 MacOS X <= 10.7.4 中的辅助应用程序

ios - 如何在ios6中用透明叠加两个图像

c++ - p_thread : exit from multiple threads

c++ - memcpy() 相邻内存区域的安全性

c# - 从 ThreadID 获取 ThreadName