Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在WPF中划分图形和游戏逻辑?_Wpf - Fatal编程技术网

如何在WPF中划分图形和游戏逻辑?

如何在WPF中划分图形和游戏逻辑?,wpf,Wpf,我正在用WPF创建一个游戏,我想知道将游戏逻辑和图形划分到不同的线程是否是一个明智的决定 我的游戏逻辑是分步进行的(一步大约需要30毫秒) 我很担心锁会降低性能 你觉得怎么样?有人有过这样的经历吗 谢谢大家! 这真的取决于你做了多少。如果你不愚蠢地编写更新逻辑,Liock就不是问题 通常,您会在内部使用客户机/服务器。UI有它自己的“呈现”模型,逻辑有它自己的非可视模型 您可以使用插入状态更新的2个队列(到模型、到可视模型)(到逻辑的操作、到可视模型的ui更新) 然后,WPF-计时或触发wise

我正在用WPF创建一个游戏,我想知道将游戏逻辑和图形划分到不同的线程是否是一个明智的决定

我的游戏逻辑是分步进行的(一步大约需要30毫秒)

我很担心锁会降低性能

你觉得怎么样?有人有过这样的经历吗


谢谢大家!

这真的取决于你做了多少。如果你不愚蠢地编写更新逻辑,Liock就不是问题

通常,您会在内部使用客户机/服务器。UI有它自己的“呈现”模型,逻辑有它自己的非可视模型

您可以使用插入状态更新的2个队列(到模型、到可视模型)(到逻辑的操作、到可视模型的ui更新)

然后,WPF-计时或触发wise-从队列中提取更新并更新模型,在进行过程中进行可视更改


根据你所做的“游戏”的不同,效果相当不错。我的“游戏”是一个金融交易应用程序,工作原理与此完全相同(尽管我有X个可视队列,因为多个屏幕都有自己的UI线程)。

这方面的缺点远远大于优点(即手动消息传递、同步问题)。不要忘记,后端表示逻辑可能已经在一个单独的线程中执行。最有可能的是,这些功能已经在消息总线上排队操作并立即返回。

现在,当我游戏中的插件冻结时,整个应用程序将冻结。但除此之外,你是对的,我以前已经尝试过使用两个线程,但我无法让它工作得很好。你的系统中有任何第三方插件吗?嗯;)否;)是的;)除非加载插件,否则整个应用程序都非常纤薄——它是高度模块化的。所以,是的,目前没有第三方,除非你咨询一些主要的金融机构,让我整合。