逻辑层就是代码里的设置和处理,表现层就是数值反应到实际的渲染上。在你这个例子里,你移动对象会需要设置对象的坐标值,这个属于逻辑层;然后由unity的接口自动反映在屏幕上,这个就属于表现层。

在这个地方表现层的处理是走unity的代码就不存在区别的问题。但是比如要做网络同步的时候,服务器发来的坐标或者指令,你基本不能直接让屏幕的对象改变位置,因为中间会需要各种位置插值处理,但是实际位置值又是需要存着的,这个时候你的逻辑位置和表现位置就是不完全同步的了,就是分离的意义了。

例子1: 角色节点的组织与管理

逻辑节点(位置,方向,状态数据等) + 动画子节点(待机,行走,攻击,技能,死亡动画,播放)

角色的位置,状态等数据都保存到逻辑节点上,逻辑节点下面,有一个孩子节点,负责播放角色的动画,及“表现”。

例子2: 帧同步中的逻辑与表现

帧同步是现在很流行的一种同步模式,比如《王者荣耀》就是帧同步做的,帧同步的逻辑与表现分离指的是

客户端接收服务端发过来的帧事件,基于这个帧事件,来驱动整个游戏的数据计算,我们叫做逻辑帧。

在帧同步里面,所有的数据计算与游戏进程的迭代,都是基于逻辑帧来驱动和计算的。逻辑帧的帧率一般是15~20FPS,而本地动画要流畅,基于60FPS,这样,我们在逻辑中处理决定播放哪些动画,本地基于客户端的帧率来播放动画。数据同步与计算在逻辑帧(15~20FPS),本地动画播放位移移动在本地表现帧(60FPS)。

例子3: ECS模式:

ECS模式就是典型的数据与表现分离,我们的Entity实体,由一个一个的数据ComponentData组成,使用System来迭代里面的数据,表现层独立出来作为单独的ComponentData。

例子4: 游戏引擎主线程与渲染线程

游戏中的主线程负责迭代游戏的逻辑,迭代完成后渲染线程负责把要绘制的数据提交给GPU绘制。做到逻辑线程与渲染线程分离TG:li9047