Unity 動態比對
用於在現有 uGUI 上進行參考動態的替換:平移、統一縮放與透明度,使用固定攝影機。在隔離的專案副本中運作。預設 auto 路徑使用一個共同的 Editor 橋接器與生成的綁定資料,而非遊戲專用的 C# 轉接器或私有遊戲方法。
探索與準備
閱讀自動綁定以了解選擇、輸出與限制,以及驗證範圍以了解經過測試的行為與剩餘的視覺配適誤差。關於合成模型、原始論文與可重現的動態基準,請閱讀方法與證據。原始碼必須能與所選的 Unity Editor 編譯,並包含 uGUI。Python 需要 numpy、scipy、opencv-python 及 Pillow;僅在需要影片輸入時才需要 ffmpeg。
python scripts/unity.py prepare --source C:/project --workspace C:/motion-work --editor "C:/Program Files/Unity/Hub/Editor/6000.3.21f1/Editor/Unity.exe"
這會複製 Assets/Packages/ProjectSettings(不含 Library),盤點場景中的 Canvas/RectTransform/佈局/元件結構,選擇一個啟動場景,進入一般 Play Mode,發現產生的 UI,選擇獨立的可見群組,並提取背景/靜止/RGBA 模板。重複啟動可建立穩定的匯入後基準線。不會儲存任何場景,也不會編輯原始碼。
檢查 selection.html、auto-report.json、auto-bindings.json 以及提取的 rest.png 影像。自動選擇是結構性的建議,而非針對使用者意圖動畫化的 UI 的知識。當任務指定某個畫面/群組時,請使用 --scene、--canvas 或重複的 --target 資料選擇器。這些不需要轉接器程式碼。重複的名稱需要庫存綁定 ID 或唯一路徑。
若僅需庫存,請使用相同的來源/工作區參數執行 scan。若要進行序列化場景預覽而不啟動遊戲,請明確選擇 --execution edit;標記其為預覽,而非執行時期驗證。當 Play Mode 初始化失敗時,請勿無聲地以編輯預覽取代。
原生 Unity 可能需要主機的已核准執行路徑以獲得授權。請對隔離副本使用現有授權。若啟動失敗,請檢查記錄檔;請勿無聲地重複重試或修復無關的遊戲程式碼。準備好的工作區是一個快照:在變更來源 UI 後,請建立新的工作區。
比對與捕捉
將錄影放在 REFERENCE_ROOT/CASE-REVISION/ 目錄下,使用 workspace.json 中的案例 ID,例如 c_abcd1234-r1/reference.mp4。捕捉使用兩秒長、30fps 的片段,結束於原始的靜止姿勢。
python scripts/unity.py match --workspace C:/motion-work --reference C:/references --revision r1
該命令從像素估計動態,寫入 solutions/REVISION,對綁定的現有物件取樣原生 AnimationClips,捕捉 Unity 輸出,並檢查保留性。新的錄影總是需要重新提取。對於相同的錄影,scripts/motion.py revise 可調整速度、軸特定距離或延遲;在編輯時間軸時,請在兩秒處保留一個靜止姿勢關鍵影格,並在編輯後重新執行 unity.py capture --workspace ... --revision ...。
像素配適器使用全解析度濾波訊號,並校準參考最終靜止影格中的小型模板/點陣差異。請檢查 *.fit.json 中的 referenceRestCalibration。對於具有不透明像素的單色圖形,flatPaintOpacity 記錄有多少影格有足夠多的獨立可見區塊來測量群組透明度。故意結束於另一姿勢/透明度的錄影不適用於此工作流程。
自動為每個目標匯出獨立的根相對 .anim 檔案,避免當同層級名稱相同時產生歧義的 Unity 動畫路徑。綁定會識別實際的場景/階層物件。不會引入包裝物件、重新父級化、重新命名控制項或回呼重新接線。
在將動態稱為比對之前,請將輸出與參考進行比較。通過佈局/綁定檢查並不代表視覺相似性。模糊像素、裁切、相似 UI 與重疊透明度仍可能需要修正。
對於 MP4,配適器會檢查靜止背景是否有解碼引入的差異。對於符合條件的單色圖形,它會根據多個筆觸共享的亮度來估計透明度。在 *.fit.json 中,videoOpacity.measuredFrames 計算在 restStartsAt 之前具有可用影片證據的影格數量;其他影格則保留較早的估計值。請檢查重播中的重疊與突然轉換。數值最差影格邊界需要已知的參考透明度值。
檢查所確立的內容
自動比較錨點/樞紐/大小/佈局配置、序列化物件參考與持續性事件綁定、最終姿勢、可用的按鈕射線投射目標,以及兩個視口尺寸下的復原狀態。它不會觸發未知按鈕或推論購買、驗證、導航或其他遊戲特定結果是否正確。gameSpecificSemanticsVerified 保持為 false。
執行 unity.py audit --workspace ... 以取得資源/配置基準線。請將探索、準備與替換成本分開計算。先前的純手動設定檔基準並不能代表自動探索的效能。
可選的 --profile trash-dash 與 --profile survivors-kit 保留了先前已知遊戲的互動測試。僅在這些語義測試有幫助時閱讀舊版設定檔;它們對於其他 uGUI 專案並非必要。