分享一下自己做的資料處理系統,能從 Unity 一鍵下載 Google 試算表資料並解析、生成多語言文件。
需求判斷
為了讓山鴉專案的文本管理更有效率,我又研究了新的資料處理系統。山鴉的多語言文件是寫在 Google 試算表上的,雖然能直接導出 xlsx 使用,但我覺得這樣不夠方便,所以找了一些自訂輸出方法的資料參考。
本篇文章不是筆記所以將省略實做細節,有興趣深入的人可以參考文章底部的資料。
外掛系統
我查了不少檔案轉換的資料,幾乎所有內容都將我指引到 Google Apps Script (GAS) 這套外掛系統。
這是一套能
總之,在了解基本內容之後就試寫了一套打包表格資料的腳本,能夠建立 key-value table 的 Json 陣列資料(不過沒有換行,這是為了文章刻意改的)。
下載文件
我很愛拿 ScriptableObject 製作輔助工具,因為它存在於資料夾的特性相當方便。我將它製作成資料下載的接口使用,只要建立物件、輸入 Excel ID、分頁索引與檔案寫入的位置,就能直接從 Unity 將 GoogleSheet 的資料下載至本地。
如此一來,在企劃修改文本後我只要按個按鈕就能就能同步本地文件了。
系統重構
資料下載的功能完成了,但我不希望所有語言的內容擠在同一份文件裏,所以想將它們分割進各自的資料夾中存放。為了增加維護與重用性,我將它重構成一套更通用的資料處理系統,把原本的資料下載與寫入拆成多個步驟完成。
系統框架
透過抽象類別建立接口框架,輸入資料並在處理完畢後傳出回調,
cs
public abstract class TextProcessNode : ScriptableObject { public abstract IEnumerator ProcessingRoutine(ProcessingData[] input, Action<ProcessingData[]> onFinishedCallback); }
資料下載
下載節點,一個使用 GAS 下載資料並傳出的節點,不會對其進行任何加工。
文本解析
解析節點,將傳入的表格分割出標題與內容,並輸出不同語言的獨立字表。
文本生成
生成節點,將輸入的資料使用 IO 寫入資料夾。
組合節點
只要將以上三個節點組合,就能自動生成與更新多語言文件了。
感謝閱讀
就醬,只是一個簡單的學習日誌,這套系統的用途應該很廣泛,只要改變幾個節點就能自動處裡不同類型的資料了。