我最近一直在玩网络工作者,我设法使用以下技术将 A* 路径查找卸载到工作线程......
- 当对象向工作人员发送消息时,将对对象的引用推送到数组上
- 当工作人员回发时,从数组中移动下一项
我的游戏有一个功能,即生物会对环境中的噪音做出反应。理想情况下,我想要实现的是......
- 游戏中的某些东西会发出半径范围内的噪音
- 将噪音的来源和生物列表传递给网络工作者
- 网络工作者以噪音范围内的生物列表作为响应
显然存在一个问题,因为我无法将一组对象传递给工作人员,而且我正在努力想办法解决这个问题。
更新的问题: 我如何(有效地)告诉主线程生物 X 和生物 Y 听到了声音?
有什么建议么?
您能否举一个示例说明您尝试向网络工作者发布的内容,例如控制台在卸载之前对其进行日志记录
像这样的东西...
var iNoiseRadius = 100;
var aCreatures = [
{id: 1, x: 0, y: 0},
{id: 2, x: 200, y: 0},
{id: 3, x: 100, y: 100},
{id: 4, x: 50, y: 400},
{id: 5, x: 100, y: 0}
];
....
oWorker.postMessage({
type: 'noise',
originator: aCreatures[2],
radius: iNoiseRadius,
creatures: aCreatures
});
在发布消息和接收响应之间,生物数组可能会发生变化,因此数组索引是无用的。