Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
Design patterns 从渲染系统中分离物理/数据更改组件_Design Patterns_Rendering_Physics_Decoupling - Fatal编程技术网

Design patterns 从渲染系统中分离物理/数据更改组件

Design patterns 从渲染系统中分离物理/数据更改组件,design-patterns,rendering,physics,decoupling,Design Patterns,Rendering,Physics,Decoupling,我现在正在读“”。这本书解释了为什么你应该“不耦合”一个软件的不同组件,在我的例子中是一个游戏 不幸的是,我已经开始编写一个小游戏,在那里我有一个物理类,它包含所有游戏对象(从静态的东西,如岩石,到其他东西,如玩家和敌人),并在每次更新时应用物理。然后在我的主类中有一个渲染循环,它循环物理世界中的对象并在屏幕上渲染它们 所以我的问题来了:我如何修改我的代码,以便将我的物理课与我的主课的渲染部分“解耦”?我是否应该为每个游戏对象创建两个不同的对象(我的意思是,这会使一切变得复杂,所以我认为这不是正

我现在正在读“”。这本书解释了为什么你应该“不耦合”一个软件的不同组件,在我的例子中是一个游戏

不幸的是,我已经开始编写一个小游戏,在那里我有一个物理类,它包含所有游戏对象(从静态的东西,如岩石,到其他东西,如玩家和敌人),并在每次更新时应用物理。然后在我的主类中有一个渲染循环,它循环物理世界中的对象并在屏幕上渲染它们

所以我的问题来了:我如何修改我的代码,以便将我的物理课与我的主课的渲染部分“解耦”?我是否应该为每个游戏对象创建两个不同的对象(我的意思是,这会使一切变得复杂,所以我认为这不是正确的做法)


亲切问候

这确实是一个广泛的问题,所以我将提出一个广泛的建议。你的物理引擎应该只处理接口。让每个具体对象公开一个物理引擎关心的接口,并将它们从物理引擎中拉出。@dbugger感谢您的回答!但是,那样的话,我所有的组件仍然是耦合的,因为对象存储在某个地方,组件从那里访问它?在我的示例中,对象存储在物理引擎中,渲染组件从那里访问它们;如果我没有弄错你的想法,那就正好相反:存储在渲染组件中的对象,物理引擎从那里访问它们?还是我误解了什么?制作第三个集合,包含对象