• 在UE4C++中的宏


    1. UE4蓝图的宏

      在蓝图中,我们可以把一堆经常使用的节点封装为一个宏,然后通过多次使用这个宏,达到了减少重复代码量的效果。

      如图:

      

       

    2. UE4C++中的宏

      那么,在UE4的C++中怎么实现宏呢?

      看代码:

      

    //这里的##是把输入的参数FuncName填进FuncName##Param中;
    //在宏里,每一行都需要在尾部加
    //经测试,最后一行的“}”的加不加都可以
    
    #define DDMODFUNC(FuncName);
        struct FuncName##Param : DDParam 
        {
            FuncName##Param() { ParamPtr = NULL;}
        }; 
        FuncName##Param* FuncName##RT(int32 ModuleIndex, FName FunctionName)
        {
            DDModuleAgreement Agreement;
            Agreement.ModuleIndex = ModuleIndex;
            Agreement.FunctionName = FunctionName;
            FuncName##Param* Param = new FuncName##Param();
            ExecuteFunction(Agreement, Param);
            return Param;
        }
        void FuncName(int32 ModuleIndex, FName FunctionName)
        {
            DDModuleAgreement Agreement;
            Agreement.ModuleIndex = ModuleIndex;
            Agreement.FunctionName = FunctionName;
            FuncName##Param* Param = new FuncName##Param();
            ExecuteFunction(Agreement, Param);
            delete Param;
        }

      内容需要结合前后文理解,故内容看不懂没关系,关键是:

      1. 宏名要大写;

      2. ##是把输入的参数FuncName填进FuncName##Param中;

      3. 每行代码结尾都要加“”

      4. 要加 #define

      如何使用宏呢:

    在.h中:
        UCLASS()
    class RACEFRAME_API ALifeCallActor : public ADDActor
    {
        GENERATED_BODY()
    
    protected:
        DDMODFUNC(HappyFunc)
    }
    
    在.cpp中:
        void ALifeCallActor::DDEnable()
    {
        HappyFunc((int32)ERCGameModule::HUD, "TestNoParam");
    }

      内容需要结合前后文理解,故内容看不懂没关系,关键是:

      1. 如DDMODFUNC(HappyFunc)中,直接调用,不需要加“;”;

      2. 在.cpp中,直接使用HappyFunc这个函数,编辑器会自动按照宏的内容生成代码。

  • 相关阅读:
    MyBatis的动态SQL详解
    mybatis ---- 级联查询 一对多 (集合映射)
    mybatis ----数据级联查询(多对一)
    mybatis ---- 实现数据的增删改查
    mybatis --- 以接口的方式进行编程
    mybatis 开发环境搭建
    初识MySQL数据库的各种CMD命令窗口下的指令
    网站设计 开发 维护 推广 从入门到精通
    VisualBasic2010入门经典
    SPSS统计分析(第5版)
  • 原文地址:https://www.cnblogs.com/mcomco/p/11936919.html
Copyright © 2020-2023  润新知