带你认识存储的本质 - 状态|青训营笔记

124 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第17天

1、3D实体搭建

3D实体

3D游戏是由一个个具有形状的实体组成的。每个实体在空间中存在于特定的位置,有特定的姿态(旋转角度)。

3D实体位姿态

  • 位置Position(x,y,z)
  • 旋转Rotation(x,y,x)
  • 缩放Scale(x,y,z)

3D实体的创建

从美术小伙伴那拿资源模型,直接使用即可 通过组合参数化的基本几何体创建 创建好之后可以调节实体的材质、颜色和纹理。

什么是预制体?将游戏对象保存在工程中,在需要的时候创建出来,这就是预制体。预制体存储着一个游戏对象,包括游戏对象的所有组件以及其下的所有字游戏对象。

2、相机、光照、天空盒

相机、投影方式、光照设置和天空盒可理解为为游戏场景布局的工具

相机

Clear Flag 背景颜色 Culling Mask 投影(透视、正交) 透视和正交投影方式 光照

  • 类型:点光源、平行光、聚光灯、面积光。
  • 颜色。
  • 强度。
  • 阴影类型。

天空盒

天空盒可以理解为是一个立方体,将整个场景进行包裹,即使旋转场景依然可以看到环境上的纹理。

设置方法:

  • 相机的清除标志设置为“天空盒”
  • 窗口-渲染-照明设置
  • 环境-天空盒材质

3、控制与碰撞

一帧的动作

课后思考

  • 写入存储系统的粒度太大,会不会导致数据原子性问题?例如一次性写100MB,如果系统突然crash,会不会只有一部分数据持久化了,另一部分丢失了?如果要解决原子性问题,一般会设计什么机制?
  • 在从应用程序到存储介质的链路上,无论读还是写,数据可能要被拷贝好几次,这几次拷贝能不能去掉?如果我们去掉大部分拷贝操作,会有什么副作用,要怎么缓解副作用?
  • 一个关系型数据库大概率是会被并发访问的,如果要保证并发安全,除了在行数据上加悲观锁还有其他方式吗?