首先要解除一个误会 就是命题里的“lua文件”和命题里的“json或者二进制文件”是没有根本区别的,都是“换了一个语言的单独数据文件”。虽说从coder的角度来理解他们不用参与项目的编译,但是从programmer的角度来理解,他们是(略有不同但可以)等同于程序文件的,因为最终拟游戏运行还是要依赖于这些数据的。 你可以思考一个问题——如果你是一个unity项目,在项目中自己建立了一个,我们比如说地图数据表,它使用C#写的,比如你的目录结构中有一个Assets/DesignerData/Maps/下面都是CityOrgrimmar.cs,BattleFieldWarSongLumberCamp.cs这些,它们因为会被unity工程编译,所以他们就不是配置文件了吗? 是否是配置文件,不取决于他是编译时还是运行时,而是取决于它的内容干了什么。所以在题主的问题里,判断一个lua是程序代码的一部分,还是一个配置文件,取决于这个lua干了什么,谁依赖于他,他又依赖于谁。如果只是把数据表填写在lua里面,利用lua本身就是metatable的性质,尽管看上去有很多逻辑脚本函数,但实际上他还是配置表。 配置文件的本质 游戏开发中为什么需要配置文件?事实上是为了把一些“特殊处理”和核心逻辑撇开,仅此而已。而这些“特殊处理”一般来说都是静态数据,但实际上是可以包含运行时数据的(这个下面会详细说到)。 我们以unity的框架为例,比如游戏中有怪物,且怪物属性非常简单,假设就只有血攻2个属性(只是说明问题,所以此处不讨论这个设计是否合适),那么在这个游戏里面这个怪物相关的会有什么呢?分为以下3个部分: Prefab Prefab本身就是unity的一个“配置文件”,跟我们做游戏的用的数据表,地图数据是一样的东西。unity依赖于Prefab来初始化一些元素。比如这里我们把一个角色在世界里的model作一个prefab,他是一个gameObje
ARTICLE
/
知乎每日精选
游戏开发中,配置数据是写在文件中还是写在代码中好?
2024年06月20日 16:25 · 来自 知乎每日精选