Unity學習記錄/ #7 Excel表格
(啊最近期末考試累死人了)
一、數(shù)據(jù)與邏輯
????嗨嘍大家好,本期專欄想著來分享一下 Excel表格 工具在Unity中是如何被我們所運用的。在說具體的使用方法之前,我還想說一說這一方法給我們的項目能帶來什么好處,也就是 游戲數(shù)據(jù)與游戲邏輯的結構。
????不知道各位在做自己的游戲項目的時候是如何設計自己的框架的,但我本人是十分贊同于 將游戲數(shù)據(jù)與游戲代碼邏輯 分割開來的這一結構。這一結構顯而易見的能讓我們對游戲的數(shù)值等數(shù)據(jù)有更直觀的感受,以及能更方便地對數(shù)值做出調整,避免對數(shù)據(jù)做出錯誤的修改。事實上在游戲策劃崗位,游戲策劃使用 Excel表格 等工具來設計游戲數(shù)值是很常見的一種方法。

????除此之外,Excel表格 所擁有的對數(shù)據(jù)強大的處理功能,也能給我們的游戲項目帶來很多的方便之處。

二、CSV文件
????老樣子,我們以一個RPG游戲數(shù)值為例,在 Excel表格 中為我們的人物角色做以下數(shù)值設計。

? ? 當我們在 Excel表 中對角色的數(shù)值做完設計后,想要將數(shù)據(jù)導入Unity測試時,我們就需要將表格導出為 CSV文件類型。

????CSV文件,全名為 Comma-Separated Values(逗號分隔值),其本質上還是一種文本文件,以純文本形式存儲表格數(shù)據(jù)(數(shù)字和文本),不過正如他的名字一樣,其內容中的數(shù)據(jù)都以 逗號 的形式分割開來了。我們可以將導出后的 CSV文件 用記事本打開觀察其內容。

????這種以逗號和換行符為分隔的形式,我們也能簡便的使用代碼進行切分。當然了,除了CSV格式之外,還有 TSV 制表符分隔值格式等等,但是 CSV格式 是更為大多數(shù)軟件所接受的格式,大家感興趣的話也可以去了解了解別的格式。

三、處理和使用數(shù)據(jù)
? ? 我們將創(chuàng)建好的CSV文件導入Unity中,并創(chuàng)建一個 SO腳本和Mono腳本。

????在SO腳本中,序列化一個 TextAsset?字段用于獲取我們的 CSV文件。

????接著我們將在 OnValidate() 方法中,對 CSV文件 中的數(shù)據(jù)進行處理。OnValidate() 是SO類中的一個公有函數(shù),只會在編輯器中執(zhí)行,每當這個SO被加載或者我們在 Inspector 窗口中對序列化的字段進行更改的時候,這個方法都會被執(zhí)行一次。

????如下,是我的簡單示例。


????在對玩家數(shù)據(jù)的處理中,我先將 CSV文本文件 的每一行單獨切分出來成為一個string數(shù)組,接著對數(shù)組除去index為 0?的每一個按照 逗號 進行切分(因為第一行并不是我們的數(shù)值),最后將切分好的每一級的數(shù)值實例化為玩家狀態(tài)類存入列表。玩家邏輯類可通過 GetCurrentState() 方法,傳入當前等級獲取到當前的 玩家屬性。


四、結語
????以上只是我對這類方法的初步簡單示例,除此之外我們還可以利用這個方法做出、優(yōu)化出很多各式各樣的結構,大家大可自己多多嘗試一番。游戲項目的制作過程中,使用其他相關的工具軟件能夠幫助到我們很多,加快工作流程、完善游戲數(shù)值、制定游戲環(huán)節(jié)等等,如 Excel表格,當我們做完了上述的步驟之后發(fā)現(xiàn)玩家的數(shù)值需要進行修改,我們僅需要在 原有的CSV文件中用 Excel 打開進行修改保存,放入編輯器覆蓋原有的 CSV文件即可。是不是非常的方便呢?
(又水一期啦,各位特殊時期要照顧好自己?。?/p>
學習教程:
阿嚴:https://www.bilibili.com/video/BV18R4y1C7SC?share_source=copy_web
官方文檔中的OnValidate()描述:ScriptableObject-OnValidate() - Unity 腳本 API