我正在使用 Three.js 开发一款完全在前端运行的 3D 游戏(目前)。我完全分离模型(状态)和 View 是个好主意吗?
例如,我现在在需要时直接操纵(平移、旋转)我的移动对象,但我正在考虑持有和操纵它们在模型(游戏状态)中的位置的向量,然后设置每帧该向量处的对象。同样,我必须以某种方式存储对象的旋转,并将其设置在 View 中的每一帧。
具体例子: 当按下左箭头键时,我只是将玩家对象向左平移。相反,我会为每个帧将玩家对象设置为模型中的当前向量,并在左箭头上平移模型中的向量。
模型- View 模式似乎是一个很好的架构思想,但恐怕它会影响性能?
最佳答案
您错过了 Model View Controller (MVC) 模式中的 Controller 。 Controller 决定模型更改时 View 应如何更新。
在具体示例的第一部分中, View 代码监视左箭头击键。这是一个坏主意,因为您检查是否按下了向左箭头,每一帧都会减慢。
在具体示例的第二部分中, Controller 监视左箭头键击并相应地更新模型。这很好,因为 Controller 只在左箭头发生时运行一次代码。这也意味着 Controller 可以决定如何处理多次按键或按住某个键等情况。
View 代码在浏览器的帧更新(快速 = 每秒 60 帧)WebGL 部分中运行。左箭头键代码在浏览器的(慢速)事件队列部分中运行。就性能而言,您应该优化在框架更新中运行的代码。
关于javascript - JavaScript 游戏的模型- View - Controller 模式 (Three.js)。好主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46308768/