今天再試著改寫 HeightmapCollision 範例裡的 TerrainProcessor
想讓它處理 HeightMap 時,可以自行尋找對應的紋理圖~
怎知,似乎再處理擋名的時候出了問題…
下意識的在該 code 附近下個中斷點,準備一覽 run time 時的狀況。
疑?
程式並沒有停下來,一樣只報個錯誤。
看來這招無效的XDD
這種時候當然直接找咕狗大神,很幸運地,幾分鐘就找到解答了
由於 ContentProcessor 是屬於編譯成類似 DLL 之後,給其它專案使用
這樣一來,自然沒有時間點可以除錯囉~
How To: Write a Custom Importer and Processor
想直接看重點就尋找「Debugging Custom Importers and Processors」,跳到該段落
注意,「起始外部程式」這個功能,在 Microsoft Visual C# 2005 Express Edition 是無法使用的樣子。
因為解決方案就得要用到這個功能,所以…
去問 M$ 吧!
就以 HeightmapCollision 這個專案作為範例吧~
我將這方案丟在「C:\~TEMP\HeightmapCollision\」
開啟「HeightmapCollisionWindows.sln」應該會有…
「HeightmapCollision」和「HeightmapCollisionPipeline」這兩個方案。
(以下簡稱HC和HCP)
HCP 底下的 TerrainProcessor 就是我們這次實驗的目標。
接著,進入 HCP 的專案屬性頁面,切換到「偵錯」的分頁…
「起始動作」的預設應該是「起始專案」,將它改成「起始外部程式」。
並且選取「MSBuild.exe」的檔案路徑,以我的電腦來說,完整路徑為…
「C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe」
接著,看到下面「起始選項」裡的「命令列的引數」。
填入用來偵錯用的專案擋(.csproj)的路徑,相對絕對位置皆可,建議用完整路徑就好。
以我的範例來說,就該填入…
「C:\~TEMP\HeightmapCollision\HeightmapCollision\HeightmapCollisionWindows.csproj」
這裡請注意,完整路徑如果太長,請想辦法丟到比較前面的地方,像是 C 槽底下。
如果設定好,應該像是這樣~
接著在 TerrainProcessor 裡面設定一個中斷點準備試驗~
最後,對 HCP 偵錯,注意,不是 HC 喔!
HCP 偵錯時會呼叫 MSBuild 去編譯 HC。
偵錯時應該會跑出一個 Console 視窗,接著漂亮地停在中斷點!
接著就隨你看囉~