XNA-Content Pipeline

XNA-Content Pipeline

目前為止,我們都是將畫好的圖或是模型直接拿來使用,感覺很單純,但是事實上在xna內部並沒有我們想像的簡單!

在一般遊戲開發上,需要做一些特效或是視覺藝術,可能同樣的圖或是模型,可以經由不一樣的處理方式達到不同的效果。

xna從讀入原始資料開始就做了一連串的工作,最終將檔案轉成xnb,其流程如下:

Source FileContent ImporterDOM ObjectContent ProcessorGame Object ModelContentTypeWriterXNB fileContentTypeReaderGame Object

msdn的圖示說明:

讀入原始檔案後會經過Content Importer轉換成DOM Object,此步驟主要專注於將原始檔案轉成我們需要的格式(物件),

再經由Content Processor轉換成Game Object Model,這裡主要的工作就是處理成我的想要的效果,

最後被ContentTypeWriter存成xnb檔

而遊戲執行時期,會由ContentTypeReader將xnb檔讀入。

而這就是我們專案Content目錄下的檔案屬性裡Content Importer和 Content Processor所扮演的角色:

image

基本上這些檔案都有xna預設的物件幫我們做一般的處理,所以除非你要讀自己的檔或是做一些額外的改變,才會改寫Importer和Processor。

而之前講的XNA-使用xml,因為xml已經有固定格式,我們不用對此xml檔案做特殊處理,

但是遊戲內使用的方式,或是說需要用到此xml的物件卻是程式設計者自訂的物件,所以只需要寫ContentTypeWrite和ContentTypeReader。