不知不觉系列文章已经来到了第二十篇,本篇我们将会给这一个大章节的内容做一个总结。
现代游戏引擎特点
我们在整个十多篇的文章中其实很多时候使用了编辑器上的功能,例如拖拽赋值等等,用场景编辑器来调整物体的位置,在Inspector上给物体添加功能组件。
这些都不是编写代码实现的,也就是说,相比于传统软件,现代商业游戏引擎其实更注重的是所见即所得的内容创作,如果什么事情都需要开发写代码的话,这个开发效率是极其低下的。
所以需要我们开发人员从传统软件的各种事情都需要改代码的思维跳脱出来,尽可能的提供编辑器上能直接编辑的能力,这样不仅是方便了团队中的其他成员,也方便的自己快速调整逻辑进行试错。
GameObject和组件
相比于传统的面向对象思想的编程,特别是相对于传统GUI框架里面全都是继承来扩展功能的搞法,现代游戏引擎越来越多的使用组件而非继承,其一大原因是游戏逻辑千变万化,很难一开始想清楚基类应该有哪些功能,子类又应该如何抽象,最后往往会导致基类膨胀,或者子类词不达意。
而Unity中,场景万物都是基于GameObject,而GameObject仅作为一个概念存在,我们实际的几乎所有功能都来自GameObject上的组件,当我们需要实现一个游戏逻辑的时候,出发点往往就是编写一个组件。
通过组件,我们可以接触到Unity给我们提供的各式各样的内置功能,例如内置的3D空间位置管理,内置的物理引擎,内置的渲染功能,都是来自各个组件。
数据的序列化
Unity引擎不仅提供了一套组件功能,也同样提供了序列化的能力,这使得我们编写的逻辑代码,添加的资源,