Unity学习记录/ #7 Excel表格
(啊最近期末考试累死人了)
一、数据与逻辑
嗨喽大家好,本期专栏想着来分享一下 Excel表格 工具在Unity中是如何被我们所运用的。在说具体的使用方法之前,我还想说一说这一方法给我们的项目能带来什么好处,也就是 游戏数据与游戏逻辑的结构。
不知道各位在做自己的游戏项目的时候是如何设计自己的框架的,但我本人是十分赞同于 将游戏数据与游戏代码逻辑 分割开来的这一结构。这一结构显而易见的能让我们对游戏的数值等数据有更直观的感受,以及能更方便地对数值做出调整,避免对数据做出错误的修改。事实上在游戏策划岗位,游戏策划使用 Excel表格 等工具来设计游戏数值是很常见的一种方法。

除此之外,Excel表格 所拥有的对数据强大的处理功能,也能给我们的游戏项目带来很多的方便之处。

二、CSV文件
老样子,我们以一个RPG游戏数值为例,在 Excel表格 中为我们的人物角色做以下数值设计。

当我们在 Excel表 中对角色的数值做完设计后,想要将数据导入Unity测试时,我们就需要将表格导出为 CSV文件类型。

CSV文件,全名为 Comma-Separated Values(逗号分隔值),其本质上还是一种文本文件,以纯文本形式存储表格数据(数字和文本),不过正如他的名字一样,其内容中的数据都以 逗号 的形式分割开来了。我们可以将导出后的 CSV文件 用记事本打开观察其内容。

这种以逗号和换行符为分隔的形式,我们也能简便的使用代码进行切分。当然了,除了CSV格式之外,还有 TSV 制表符分隔值格式等等,但是 CSV格式 是更为大多数软件所接受的格式,大家感兴趣的话也可以去了解了解别的格式。

三、处理和使用数据
我们将创建好的CSV文件导入Unity中,并创建一个 SO脚本和Mono脚本。

在SO脚本中,序列化一个 TextAsset 字段用于获取我们的 CSV文件。

接着我们将在 OnValidate() 方法中,对 CSV文件 中的数据进行处理。OnValidate() 是SO类中的一个公有函数,只会在编辑器中执行,每当这个SO被加载或者我们在 Inspector 窗口中对序列化的字段进行更改的时候,这个方法都会被执行一次。

如下,是我的简单示例。


在对玩家数据的处理中,我先将 CSV文本文件 的每一行单独切分出来成为一个string数组,接着对数组除去index为 0 的每一个按照 逗号 进行切分(因为第一行并不是我们的数值),最后将切分好的每一级的数值实例化为玩家状态类存入列表。玩家逻辑类可通过 GetCurrentState() 方法,传入当前等级获取到当前的 玩家属性。


四、结语
以上只是我对这类方法的初步简单示例,除此之外我们还可以利用这个方法做出、优化出很多各式各样的结构,大家大可自己多多尝试一番。游戏项目的制作过程中,使用其他相关的工具软件能够帮助到我们很多,加快工作流程、完善游戏数值、制定游戏环节等等,如 Excel表格,当我们做完了上述的步骤之后发现玩家的数值需要进行修改,我们仅需要在 原有的CSV文件中用 Excel 打开进行修改保存,放入编辑器覆盖原有的 CSV文件即可。是不是非常的方便呢?
(又水一期啦,各位特殊时期要照顾好自己!)
学习教程:
阿严:https://www.bilibili.com/video/BV18R4y1C7SC?share_source=copy_web
官方文档中的OnValidate()描述:ScriptableObject-OnValidate() - Unity 脚本 API