讓我告訴你一些關於這個問題來自何處的信息。我一直在玩Serious Sam 2的SDK,這是一款運行於Serious Engine 2上的第一人稱射擊遊戲。該引擎引入了一些名爲MetaData的東西。元數據在引擎中用於序列化類並能夠在編輯器環境(嚴重編輯器2)中進行編輯。因此,例如,而不是:在dll中保存額外的數據,他們是如何做到的?
class CSomeGameItem : CEntity
{
public:
int iHealthToGive;
}
,不會在編輯器中顯示出來,你會怎麼做:
meta ver(1) class CSomeGameItem : CEntity _("Some game item")
{
public:
meta int iHealthToGive; _("Amount of health to give")
}
現在製作水平的時候,你可以插入一個「一些遊戲項目」實體進入你的關卡,並編輯它的一個屬性。現在,我知道Croteam(所述遊戲和引擎的開發人員)正在使用額外的編譯器(Mdc,元數據編譯器)將關於類及其變量的額外信息注入到dll文件中,以使此元數據系統成爲可能。有沒有人有任何線索,他們如何做到這一點?
哦,順便說一句,meta,ver()和_()關鍵字在其代碼中被定義爲「無」,因此「正常」編譯器會忽略它們。