跳到正文
文件
本頁內容

參與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由倉庫的release workflow在推送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就會失敗