[UE4]宏】的更多相关文章

本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/72834164 作者:cartzhang 一.GENERATED_BODY 都实现了什么? 在前几年的写引擎代码的时候,也类似使用过这些宏定义的方法,用法也是比较复杂的.现在就借UE4来回顾和分析一下. 测试版本:4.15 看例子: // Fill out your copyright notice in the Descri…
宏和函数的区别 “展开”就是直接将宏代码直接复制粘贴替换到所有使用当前宏的地方.这个跟C++中的宏是一样的. 1.宏可以有多个入口,多个出口,函数只有一个入口,一个出口 2.宏的参数可以使用“Exec”类型,函数不可以 3.类的成员函数可以被子类继承,但宏不会被继承,子类无法使用父类的宏. 4.可以创建自定义宏库,供所有的蓝图使用 宏库需要选择父类,如果选择Actor作为父类,则所有Actor的类及其子类都可以使用该宏库.Object是所有类的父类,如果创建一个父类为Object的宏库,则可以被…
UFunction声明 UFunction 是虚幻引擎4(UE4)反射系统可识别的C++函数.UObject 或蓝图函数库可将成员函数声明为UFunction,方法是将 UFUNCTION 宏放在头文件中函数声明上方的行中.宏将支持 函数说明符 更改UE4解译和使用函数的方式. 可利用函数说明符将UFunction对蓝图可视化脚本图表公开,以便开发者从蓝图资源调用或扩展UFunction,而无需更改C++代码.在类的默认属性中,UFunction可绑定到委托,从而能够执行一些操作(例如将操作与用…
属性声明 属性使用标准的C++变量语法声明,前面用UPROPERTY宏来定义属性元数据和变量说明符. UPROPERTY([specifier, specifier, ...], [meta(key=value, key=value, ...)]) Type VariableName; 示例:位掩码 UENUM(BlueprintType) enum class EColorBits1 :uint8 { ECB_Red, ECB_Green, ECB_Blue, }; //使用"bitflags…
UE4 基础,但是不经常用总是忘记,做个笔记加深记忆: 图方便就随便贴一个项目中的STRUCT和 Enum 的.h 文件 Note:虽然USTRUCT可以定义函数,但是不能加UFUNCTION 标签喔 USTRUCT(BlueprintType) struct FData_PageInfo { GENERATED_USTRUCT_BODY() FData_PageInfo(); FData_PageInfo(UChildActorComponent *parent_Com); void reIn…
插件Plugin: 本来应该是指一种纯以接口与外界打交道的程序模块,在同一接口背后可以有多种实现,更换实现完全不影响客户端代码(不用重编). 但是在ue4的世界里,插件似乎不是这个意思,仅仅是一种可以在构建时选择是否启用的模块,在客户端代码里充斥着对插件内部函数的调用 只不过这些调用一般要被封装在简单的#if WITH_PLUGINXXX之类的宏里 在构建时,若检测到插件未启用或不存在,就不会定义相应的宏,于是插件本身不被编译,调用它的代码也被清除,各自都相安无事. 插件描述符,在ubt里对应类…
ue4的代码是模块的形式来组织 在源码层面,一个包含*.build.cs的目录就是一个模块 这个目录里的文件在编译后都会被链接在一起,比如一个静态库lib,或者一个动态库dll. 不管是哪种形式,都需要提供一个给外部操作的接口,也就是一个IModuleInterface指针. *注意这里并不是说调用模块内任何函数(或类)都要通过该指针来进行,实际上外部代码只要include了相应的头文件,就能直接调用对应的功能了(比如new一个类,调一个全局函数等),因为实现代码要么做为lib被链接进exe,或…
UObject是一套很复杂的体系,之前读ue3代码时曾分析过其类型系统实现,主要是与UClass间的关系 现在转到ue4,发现那一块其实差不多,于是再重点备忘一下UObject本身的创建和初始化过程 1.首先,用NewObject<>来创建一个新对象: template< class T > T* NewObject(UObject* Outer, UClass* Class, FName Name = NAME_None, EObjectFlags Flags = RF_NoFl…
<Inside UE4>-1-基础概念   InsideUE4   创建测试项目 接上文的准备工作,双击生成的UE4Editor.exe,选择创建测试C++空项目Hello(以后的源码分析都会基于该最简单的项目)   项目文件结构 VS项目和文件目录: 可以看到,Config目录里带着3个最主要的配置,Editor,Engine,Game.代码方面自动生成了用于编译系统的3个.cs文件,C++代码方面生成了一个Hello "Game Module",和HelloGameMo…
H UFUNCTION(BlueprintNativeEvent) void EventName(); virtual void EventName_Implementation(); EventName事件发生时会调用这个函数 CPP void ClassName::EventName_Implementation() 这个宏是UE4的强制内联函数,用于优化,返回Mesh的指针给Pickup FORCEINLINE class UStaticMeshComponent *GetMesh() c…