天天看點

Unity開發實戰經驗分享

作者:侑虎科技

本課程主要記錄了筆者項目初期碰到的并值得一說的實際業務問題,涵蓋了比較多用戶端架構設計的内容,以及有效提升開發者程式設計體驗的内容。

主要包括以下内容以及一些其他配套的小工具。

  • Luban配表工具的使用介紹
  • ECS設計下的加載管理
  • 設計項目資源規範化
  • 設計本地化元件
  • C# Task使用指南
  • 設計技能系統
  • Unity Android多管道管理

作者L:杭州某遊戲公司用戶端主程

從事遊戲行業六年有餘,目前主要在公司負責通用底層架構設計,及一款手遊項目的用戶端主程

目錄

1| Luban Excel配表工具使用推薦及總結

2| 基于ECS設計下的加載管理

3| 對資源的規範化我們能做什麼

4| 如何設計本地化元件

5| C# Task指南

6| 如何設計技能系統

7| Unity Andorid多管道管理

附錄1| 一些關于代碼積累的記錄

附錄2| 如何設計角色屬性元件

附錄3| CliToolkit工具

附錄4| ET Entity Tree 工具

附錄5| 内網Package管理

本篇轉載自《Unity開發實戰經驗分享》UWA學堂 | Unity和Unreal遊戲引擎的從業者學習交流平台的第1節。

幾乎每個遊戲的制作過程中都少不了和配置打交道的需求,有的是用Unity自帶的ScriptObject進行存儲,或者更多的是使用Excel等表格工具,二次導出配置檔案等。

每種方案見仁見智,依照不同的使用場景各有優劣。

一般來說資料的輸入都是由策劃來完成的,而大部分策劃非常傾向于使用Excel作為日常配置使用的工具,尤其是在需要批量拉表的場景下,其他的方案在這個場景下與Excel幾乎沒有任何可比性。

相關連結

Luban 倉庫位址

Luban 官方示例

Luban 官方文檔

Luban 簡單示例

Luban 簡單文檔

Luban Unity GUI 工具

為什麼使用Luban

如果項目中使用Excel作為配表的載體,大部分都會選擇使用相關的導表工具,可能是項目自己開發,也可能是使用一些現成的工具,比如Git上tabtoy、excel2json等相關工具。

但是上面這些,包括大部分自己開發的導表工具,或多或少都會存在一些緻命的限制,或者不夠通用,亦或者不夠靈活等等的問題。

一個具有普适性的配表工具需要相容的場景非常多,各種語言、自定義生成模闆、資料反倒、資料有效性驗證等等。

而Luban是目前唯一一個市面上有資格成為行業配表标準的工具,未來也很難會有同類産品可以超越。

核心功能介紹

資料有效性驗證

這裡的資料有效性不是指bool的格子填了一個int。

有效性驗證這個問題之前讓我非常頭大,經常出現策劃跑過來找你說:“我這裡程式有 bug,你檢查一下”,然後花了半天時間查到了因為配表中某一行的id或者關鍵資料填寫不合法。

一次兩次還可以,次數多了難免心态不好,尤其當人員發生變動,新來的人無法完全了解每個值的意義,就很容易放飛自我,最終就是事故,而這些問題是可以從源頭有效切斷的。

如果你項目中配表的内容存在某個地方需要相關人員記住應該怎麼配,而沒有相關自動校驗,那麼這裡假以時日一定會出問題。

工具支援的校驗器如下:

Unity開發實戰經驗分享

當然,一個遊戲的開發如果需要完整校驗所有配置的合法性,上述這些校驗器是無法完全滿足的,或者說這些複雜場景不應該由Luban來解決,是以針對這些場景,在官方示例中有一個CfgValidator來處理這種問題。

Unity開發實戰經驗分享

生成模闆

一個合格的配表工具應當相容自定義生成代碼功能,而Luban這裡使用的是scriban的方案。

當你有代碼定制需求時,99%的場景不需要改代碼生成工具的源碼即可完成定制需求。

在我整理的Luban 簡單文檔這個文檔裡面包含了模闆具體生成的介紹,可以加速你了解如何自定義模闆。在Luban現有的設計下,幾乎可以相容任何場景(包括老項目的遷移)。

複雜類型的填寫

在這個倉庫中,Luban 簡單示例的多态示例中可以很直覺地看到繼承相關的複雜類型應當如何在Excel中展開和填寫。

Unity開發實戰經驗分享

配表支援繼承在很多遊戲開發場景中非常非常受用,比如遊戲中的道具、裝備和英雄類的定義一定存在共用資料結構和特化的資料結構等,如果沒有繼承這裡的代碼會非常難看,而且配表填寫的内容也會成為災難。

Luban支援任意複雜資料結構的嵌套,隻有在代碼中能定義出來,Luban就能解析,但是在實際使用中,并不推薦使用非常複雜的資料結構,這樣會給策劃帶來額外的填表負擔,以及部分場景下的代碼生成的額外工作量。

資料及定義過濾

一些定義隻需要在用戶端使用,或者隻會在服務端使用,需要在生成時進行動态剔除,當然這個功能,一般的配表工具也都支援,但Luban額外考慮到了一些場景,比如這一條資料需要臨時注釋或者僅在測試環境下使用。

Unity開發實戰經驗分享

這裡的 test就非常有用,我們會單獨配置一套test資料,用于遊戲中的核心邏輯驗證,及測試用例的輔助配表,而這些資料不會出現在正式環境下。

資料反倒

有時候會有這種場景,項目一些配置需要在Unity等遊戲引擎中完成,可能是一些技能的配置等,這個時候就可能需要反倒資料。

如果是一些老的項目需要遷移,也是一個非常合适的場景。

本地化

隻要是配表工具,就一定繞不開本地化這件事,Luban同樣也提供了本地化的解決方案。

這裡值得一提的是,Luban會将所有未加入翻譯表的key單獨輸出到指定的檔案中,友善檢查。

其他

Luban支援的序列化格式、語言和場景非常多,這裡不一一介紹了,僅對我目前使用中碰到的核心功能進行介紹。

流程推薦

下面提到的内容在Luban 簡單示例倉庫中都可以找到相關代碼。

導出腳本選擇

個人比較推薦實用sh作為項目通用導表工具,Windows需要配置sh檔案預設使用git bash作為打開方式即可。

Unity開發實戰經驗分享

這裡主要考慮的是平台相容性問題,比如開發環境中可能有人使用的是Mac也可能是Windows,但是在部署時大部分都是Linux服務。如果每個平台單獨維護一份腳本,加上不同環境和使用場景,這裡對應的檔案數量就比較離譜了。

test、dev、release

建議項目按照這種方式來劃配置設定表:

  • test
  • 僅在測試用例、Editor 下使用
  • dev
  • 僅在開發環境下使用
  • release
  • 僅在正式環境下使用

auto_validation

首先,我們并不希望策劃推送一個已經被自動流程檢測出錯誤的送出,此時需要對Git進行Hook,核心就是送出時本地檢查一遍,如果有錯誤,禁止本次commit,将這種低級錯誤扼殺在源頭。

watch

一般可能會有這種需要對配置熱重載的功能,使用watch,配合自己項目中的熱重載就可以做到這邊儲存Excel,Unity不需要重開遊戲就可以直接加載到新配置。

以上就是《Unity開發實戰經驗分享》UWA學堂 | Unity和Unreal遊戲引擎的從業者學習交流平台的第1節,此篇文章比較适合從事遊戲行業的開發人員、對Unity開發感興趣的同學以及希望提升底層設計能力,解決實際業務痛點的讀者。

讀完全篇後你會深入了解如何實作實際業務需求,提升底層設計能力以及部分文章的配套Demo。

因篇幅問題,文章中涉及的外部連結通過原文《Unity開發實戰經驗分享》UWA學堂 | Unity和Unreal遊戲引擎的從業者學習交流平台檢視。

繼續閱讀