我正在开发一个完全在前端(目前)运行的three.js中的3D游戏。我完全将模型(状态)和视图分开是一个好主意吗?
例如我现在可以在需要时直接操纵(平移,旋转)我的移动物体,但是我想要在模型(游戏状态)中持有和操纵它们的位置矢量,然后设置位置每帧的那个向量的对象。我必须以某种方式存储对象的旋转,并在视图中的每一帧设置它。
具体例子: 按下左箭头键时,我只是将播放器对象向左翻译。相反,对于每个帧,我将玩家对象设置为模型中的当前向量,而左箭头则转换模型中的向量。
模型 - 视图模式似乎是一个很好的建筑理念,但我担心它会达到性能?
答案 0 :(得分:1)
您错过了模型视图控制器(MVC)模式中的Controller。控制器决定模型更改时应如何更新视图。
在具体示例的第一部分中,视图代码监视左箭头键击。这是一个坏主意,因为你检查是否按下了左箭头,每一帧都会变慢。
在具体示例的第二部分中,控制器监视左箭头键行程并相应地更新模型。这很好,因为控制器只在左箭头发生时运行一次代码。这也意味着控制器可以决定如何处理诸如多次按键或按下按键之类的事情。
视图代码在浏览器的帧更新(快速=每秒60帧)WebGL部分中运行。左箭头键代码在浏览器的(慢)事件队列部分中运行。性能方面,您应该优化在帧更新中运行的代码。