參與 MRTK3

MRTK3 是 MIT 授權下的開放原始碼專案。 歡迎和感謝社群對於新功能和錯誤修正的貢獻。

參與 MRTK3 很簡單。 我們建議使用 MRTKDevTemplate Unity 專案作為方便的開發測試,因為它已經包含所有 MRTK3 套件作為本機磁碟上的相依性。 如需詳細資訊,請參閱 MRTKDevTemplate 專案的相關文件,以取得範例場景和本機磁碟相依性的詳細數據。

貢獻指南

  1. 將 MRTK 存放庫分支至您的 GitHub 帳戶。

  2. 依照 我們的指南從範本專案開始 複製您的分支 MRTK 存放庫確定您有必要的工具,特別是正確的 Unity 版本。 若要確保您位於正確的分支上,請使用 命令進行複製:

git clone --branch mrtk3 YOUR_GIT_URL
  1. 為您的變更或修正建立新的分支。
git checkout -b yourchange_fix
  1. 開啟 MRTKDevTemplate 位於 中的 UnityProjects/MRTKDevTemplate範本專案。 您可以將專案新增至 Unity 中樞,以方便存取。

  2. 進行所需的變更,並建立單元測試,以確保變更如預期般運作。 請務必在編輯器中進行測試,並部署至裝置。 將變更認可至分支。 將分支發佈至分支上游。

  3. 在 MRTK 存放庫上開啟提取要求,並以 分支為目標 mrtk3 。 請務必正確描述您所做的變更,並將相關標籤套用至提取要求,以取得更佳的分類和分級。 如果您是 MRTK 的新參與者,您可能需要簽署我們的參與合約。

  4. 解決社群或維護小組要求的任何修正,並在核准後合併您的PR。

撰寫測試

測試是確保 MRTK 是高品質混合實境應用程式可靠基礎的重要部分。 新增的任何新功能都應該有單元測試,以確保其功能保持正確,因為未來會對程式代碼基底進行其他變更。

若要撰寫單元測試,建議您先查看現有的單元測試,並瞭解如何使用 MRTK 測試公用程式和模擬器來模擬 XR 輸入。 您可以模擬手部輸入、注視、HMD 位置和其他基本輸入相關功能。 以下是撰寫良好單元測試的一些一般建議:

  • 請嘗試撰寫更細微的測試來評估較小的功能片段,而不是較大的整合型測試。 更細微的單元測試可讓維護人員查看哪些特定功能已中斷。 此外,也很重視更一般的端對端功能測試,但請確定您功能的每一個較小部分一開始都經過妥善測試。
  • 請確定您的測試 (和功能) 不會對使用者的方向或位置進行任何假設。 您的測試和功能應該可從世界原點進行任意位移或旋轉。
  • 如果您的測試模擬使用者輸入,請務必將 我們的 BaseRuntimeInputTests子類別化,這可確保已設定適當的測試載入器並將其損毀。
  • 使用 NUnit 參數化,輕鬆地增加測試的多樣性和彈性。 請參閱這裡的參數化 NUnit 測試檔。
  • 某些輸入或互動可能需要多個畫面才能註冊。 如果您的互動未註冊,您可以使用 yield return RuntimeTestUtilities.WaitForUpdates() 將額外的延遲畫面新增至測試。
  • 請嘗試撰寫能儘快執行的單元測試,以避免 CI 反覆項目時間變慢。
  • 請務必將相關的測試相依性新增至 package.json,以及對測試資料夾元件定義檔的正確參考。

持續整合

在能夠合併之前,每個提取要求都受限於自動化測試。 其他持續整合 (CI) 作業也會在主要開發分支上產生的認可上執行,以確保中斷的套件不會部署到摘要。

如果您的測試是在編輯器中傳遞,但在 CI 回合中失敗,您應該以批次模式在本機執行測試。 在無圖形批次模式中執行時,某些類型的測試可能會意外失敗,因為時間差異或其他 Unity 常用專案。 以批次模式在本機執行測試,有助於在 CI 執行之前識別這些不一致的測試。

Tooling/Tests/run_playmode_tests.ps1使用文稿以批次模式在本機執行測試。 您必須關閉 Unity 編輯器才能這麼做。

$ ./Tooling/Tests/run_playmode_tests.ps1

文稿會在資料夾中 /out 產生輸出檔案,包括 .log 檔案和測試結果 .xml。 您可以將正則表示式傳遞至腳本,以篩選要執行的測試。 自訂 Unity 版本和項目資料夾位置也可以提供為自變數。

$ ./Tooling/Tests/run_playmode_tests.ps1 -unityVersion 2021.3.5f1 -projectPath ../my/project/path