參與SDK開發
SDK的問題請在bullet-hero/sdk倉庫的issues中報告,程式碼修改也以拉取請求的形式提交到那裡。貢獻者規則位於同一個倉庫中,就在程式碼旁邊
倉庫是bullet-hero/sdk,預設分支為master
在哪裡報告
| 關於什麼 | 報告到哪裡 |
|---|---|
| SDK及其程式碼 | bullet-hero/sdk/issues |
| 遊戲:玩家的錯誤報告和建議 | bullet-hero/releases/issues |
| 文件文本 | bullet-hero/docs |
規則在哪裡
貢獻者規則位於SDK倉庫本身,就在它們所描述的程式碼旁邊:
| 檔案 | 內容 |
|---|---|
| README.md | 依賴、關卡包、構建DLL和包、檢查示例 |
| CLAUDE.md | 思維模型、資料夾索引以及整個庫的約定 |
每個資料夾中的CLAUDE.md | 該資料夾的區域性規則,例如Serialization、Validations、Publishing |
| Docs/VERSIONING.md | 版本軸、代、遷移和拒絕 |
| Docs/IDENTIFIERS.md | 模型如何定址實體:Guid、int、幀、欄位路徑 |
| 使用者關卡許可政策(在本網站上) | 使用者內容的許可政策,與TrustedSourceCatalog一起修改 |
| Versions/README.md | 如何編寫快照和遷移器 |
| Generators/README.md | 生成器約定 |
| Roslyn/README.md | 分析器和模型生成器,以及如何重新構建它們 |
| UnityIntegration/README.md | 雙重編譯約定 |
| CHANGELOG.md | 按sv版本列出的變更,最新的在頂部 |
構建和測試
dotnet build -c Release BH.SDK.csproj
dotnet test Tests/BH.SDK.Tests.csproj
dotnet pack -c Release BH.SDK.csproj
- 這裡在沒有Unity的情況下構建Unity所編譯的同一份原始碼。破壞無引擎約定的檔案會讓這次構建失敗
- 輸出到
bin~和obj~ - 打包命令只生成
.nupkg。釋出到nuget.org由倉庫的releaseworkflow在推送sv標籤時完成
注意
分析器和模型生成器以預先構建好的BH.SDK.Roslyn.dll形式放在SDK根目錄。修改Roslyn/中的任何內容後,請重新構建並複製它。否則舊的生成器會繼續執行,儘管原始碼已經不同
cd Roslyn
dotnet build BH.SDK.Roslyn.csproj -c Release
cp bin~/Release/BH.SDK.Roslyn.dll ../BH.SDK.Roslyn.dll
dotnet test Tests~/BH.SDK.Roslyn.Tests.csproj -c Release
在Unity編輯器中,選單項Tools > BH.SDK.Roslyn > Build Analyzer完成同樣的操作
值得提前瞭解的不變數
- 核心不引用任何
UnityEngine型別。需要引擎的程式碼放到UnityExtensions/,或放到UnityIntegration/中#if BHSDK_UNITY之後,並提供不依賴引擎的分支 - 程式碼對檔案和記憶體中的資料同樣適用,只使用BCL中的非同步機制
netstandard2.1和C# 9是Unity專案編譯時使用的版本。不會提高它們- 模型是
[GenerateModel] public sealed partial class。每個可序列化欄位都從Names.cs中取得自己的鍵 - 任何模型變化都是帶有快照和遷移器的新一代。更多:版本與遷移
- SDK版本存放在三個地方:
SdkVersion.cs、package.json和BH.SDK.csproj中的<Version>。只要其中一個單獨變動,SdkVersionAgreementTests就會失敗