1. 程式人生 > >【HLSDK系列】怎麽增加一種新實體

【HLSDK系列】怎麽增加一種新實體

sta fun class 使用 pen 關聯 creat bsp cnblogs

你平常肯定接觸到很多比如 info_player_start hostage info_target 之類的實體,這裏就解釋一下怎麽創建一種新的實體。

首先建立一個新的 .h 文件(當然你寫在現有的文件上也可以),建立一個基於 CBaseEntity 的類,例如:

1 class CMyEntity : public CBaseEntity
2 {
3 public:
4     void Spawn(void);
5 }

在 .cpp 文件裏編寫這個類的函數體,例如:

1 void CMyEntity::Spawn(void)
2 {
3 }

寫好了類還沒完事,因為引擎還不認識你這個實體,你需要使用 LINK_ENTITY_TO_CLASS 宏來讓你的類和一個名稱關聯起來,這個名稱就是你的實體名。例如:

註:也是寫在 .cpp 裏

1 LINK_ENTITY_TO_CLASS(myentity, CMyEntity);

完成這些步驟,你就可以用 CREATE_NAMED_ENTITY (也就是 g_engfuncs.pfnCreateNamedEntity)來創建出你的實體了,例如:

 1 edict_t *pent = CREATE_NAMED_ENTITY(MAKE_STRING("myentity"));
 2 
 3 if (!pent)
 4     return;
 5 
 6 CMyEntity *pEntity = (CMyEntity *)CBaseEntity::Instance(pent);
7 8 pEntity->Spawn(); 9 10 // your code here ...

好了步驟就這些了,想實現各種各樣的功能,不要忘了參考 HLSDK 的代碼,裏面有你想要的!

【HLSDK系列】怎麽增加一種新實體