zoukankan      html  css  js  c++  java
  • 【HLSDK系列】怎么增加一种新实体

    你平常肯定接触到很多比如 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 的代码,里面有你想要的!

  • 相关阅读:
    Mvc请求管道中的19个事件
    asp.net 验证正则表达式
    Asp.net MVC进入请求管道的过程
    MVC(二)
    Aspect Oriented Programming (AOP)
    在C#中??和?分别是什么意思?
    MVC(一)
    ASP.NET 管道事件与HttpModule, HttpHandler简单理解
    Entity Framework && Lambda
    扩展类和扩展方法
  • 原文地址:https://www.cnblogs.com/crsky/p/6880982.html
Copyright © 2011-2022 走看看