XNA-Content Pipeline
目前為止,我們都是將畫好的圖或是模型直接拿來使用,感覺很單純,但是事實上在xna內部並沒有我們想像的簡單!
在一般遊戲開發上,需要做一些特效或是視覺藝術,可能同樣的圖或是模型,可以經由不一樣的處理方式達到不同的效果。
xna從讀入原始資料開始就做了一連串的工作,最終將檔案轉成xnb,其流程如下:
Source File | Content Importer | DOM Object | Content Processor | Game Object Model | ContentTypeWriter | XNB file | ContentTypeReader | Game Object |
msdn的圖示說明:
讀入原始檔案後會經過Content Importer轉換成DOM Object,此步驟主要專注於將原始檔案轉成我們需要的格式(物件),
再經由Content Processor轉換成Game Object Model,這裡主要的工作就是處理成我的想要的效果,
最後被ContentTypeWriter存成xnb檔
而遊戲執行時期,會由ContentTypeReader將xnb檔讀入。
而這就是我們專案Content目錄下的檔案屬性裡Content Importer和 Content Processor所扮演的角色:
基本上這些檔案都有xna預設的物件幫我們做一般的處理,所以除非你要讀自己的檔或是做一些額外的改變,才會改寫Importer和Processor。
而之前講的XNA-使用xml,因為xml已經有固定格式,我們不用對此xml檔案做特殊處理,
但是遊戲內使用的方式,或是說需要用到此xml的物件卻是程式設計者自訂的物件,所以只需要寫ContentTypeWrite和ContentTypeReader。