我正在创建一个游戏,我有一个大约100毫秒的寻路功能。我有5个敌人,每个都在contstructor中有这个功能:
newPath = new System.Threading.Timer((e) => {
getNewPath(); //The function that takes ~100 ms
}, null, 0, 5000);
现在,我在程序的早期阶段使用System.Threading.Timer(每50毫秒运行一次仅用于步进功能,更新位置等)。那一个工作正常,但如果我运行这个功能(不要忘记我有5个敌人,所以它每5秒运行5次),我的整个计算机只是冻结。现在我没有一台糟糕的计算机(它不是最好的,但它对我正在使用它有很多好处),所以我不知道问题是什么。即使所有计时器一个接一个地运行(它们不应该运行,它们应该同时运行),它应该花费的最多时间是500毫秒(或半秒),但它完全杀死我的计算机,到了这一点我的鼠标不移动,我不能按Ctrl-Alt-Del,我只需按住电源按钮直到它关闭。
我测试了一个简单的打印函数来代替getNewPath(),它完美无缺地按预期工作,所以我真的不知道是什么问题。
我的问题是:
谢谢!
答案 0 :(得分:0)
在不知道getNewPath()内部的代码的情况下,甚至无法猜出原因。而且很难相信只有一个简单的A *路径寻找算法
以下是开始调查的一些要点
可能还有更多值得关注的事情。但这些应该足以让你开始。任何人都有必要给出意义建议。