UE4基础知识总结(五)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE4基础知识总结(五)相关的知识,希望对你有一定的参考价值。
参考技术A 九、虚幻架构1. 游戏 性类
a. 游戏 性类的前缀有:1.A 它们是 Actor,可直接生成到世界场景中。
2.U 必须从属于Actor,与组件类似的对象。
b. 游戏 性类头文件不许出现:#include "ClassName.generated.h"这行代码。
UCLASS([specifier, specifier, ...], [meta(key=value, key=value, ...)])
class ClassName : public ParentName
GENERATED_BODY()
2.UCLASS(blueprintable) :指定该类为创建蓝图的可接受基类。
3.UCLASS(ClassGroup=GroupName) :表示虚幻编辑器的Actor浏览器在Actor浏览器中启用Group View(组视图)的时候应该在指定的GroupName(组名称)中包括这个类及其所有子类。
4.UCLASS(const):本类中的所有属性及函数均为常量,并应作为常量导出。
5.UCLASS(Deprecated):该类已被废弃,并且该类的对象在序列化时将不会被保存。
6.UCLASS(showFunctions=FunctionName):在属性视图中显示指定的函数。
d.所有的 游戏 性类必须使用 GENERATED_BODY 宏进行正常实现。
2.函数
UFUNCTION([specifier, specifier, ...], [meta(key=value, key=value, ...)])
ReturnType FunctionName([Parameter, Parameter, ...])
1.UFUNCTION(BlueprintAuthorityOnly):如无网络权限,则该函数将不会从蓝图代码中执行
2.UFUNCTION(BlueprintCallable):该函数可在蓝图或关卡蓝图图表内执行。
3.UFUNCTION(BlueprintImplementableEvent):此函数可以在蓝图或关卡蓝图图表内进行重载。
4.UFUNCTION(BlueprintPure):此函数不会以任何方式影响其从属对象,并且可在蓝图或关卡蓝图图表中执行。
5.UFUNCTION(Category="MajorCategory,SubCategory"):当在蓝图编辑工具中显示时,定义函数的分类。
6.UFUNCTION(Unreliable):此函数在网络间复制,但可能会由于带宽限制或网络错误而传送失败。
3.接口
UINTERFACE([specifier, specifier, ...], [meta(key=value, key=value, ...)])
class ClassName :ParentName
1.UINTERFACE(Blueprintable):指定该类为创建蓝图的可接受基类。
2.UINTERFACE(DependsOn=(ClassName, Classname, ...)):表示ClassName是在这个类之前进行编译的。ClassName必须在同一个(或者是以前的)软件包中指定一个类。
3.UINTERFACE(MinimalAPI):使得类的类型信息由其他模块导出以供使用。
4.UINTERFACE(NotBlueprintable):指定该类不是创建蓝图的可接受基类。
4.属性
UPROPERTY([specifier, specifier, ...], [meta(key=value, key=value, ...)])
Type VariableName;
UPROPERTY(EditAnywhere, BlueprintReadWrite, category = "CS3UserWidget"):可编辑
5.结构体
USTRUCT([Specifier, Specifier, ...])
struct StructName
GENERATED_USTRUCT_BODY()
;
1.USTRUCT(Atomic):意味着这个struct要一直作为一个单独的单元进行序列化。
2.USTRUCT(BlueprintType):将此结构体作为用于蓝图中变量的类型。
3.USTRUCT(NoExport):不会为该类创建自动生成的代码;
UE4基础知识总结(四)
参考技术A 六、自动测试技术1.自动测试分为简单测试和复杂测试,简单测试用来描述单个原子测试,复杂测试用来运行基于多个输入的相同代码。
2.简单测试可用来确认特定功能如预期般可操作。一般都是单元测试或功能测试。
3.复杂测试可被用来对一系列物品迭代并对每个物品运行相同的功能。一般就是内容压力测试。例如载入所有地图或编译所有蓝本。
4.当前的规则是将所有的自动测试放置到相关模块内的PrivateTests目录。测试文件命名为[ClassFilename]Test.cpp
5.这些测试通过应用RunTest()函数来单独定义其功能,而且Parameters字符串将保持为空字符串。
IMPLEMENT_SIMPLE_AUTOMATION_TEST( TClass, PrettyName, TFlags )
IMPLEMENT_COMPLEX_AUTOMATION_TEST( TClass, PrettyName, TFlags )
七、编码规范
1.编码规范对于程序员来说非常重要,原因如下:
a.一套软件80%的生命周期都是维护。
b.在软件的整个生命周期中,几乎不可能一直是软件的原始作者来对其进行维护。
c.编码规范可以改进软件的可读性,从而使得工程师可以快速并透彻地理解新的代码。
d.如果我们决定将源代码公布到 MOD 开发者社区,那么我们想让它通俗易懂。
e.大部分编码规范实际上是交叉编译器兼容性所要求的。
2.变量、方法及类的名称应该清晰、明确且具有描述性。
3.注释应该是辅助加强代码的,代码是功能实现,注释表明了代码的目的。
八、对象
1.虚幻引擎中的对象基础类为UObject。UCLASS宏可用于标记从UObject派生的类,使UObject处理系统识别到它们。
2.UCLASS宏为UObject提供一个对UCLASS的引用,描述其基于虚幻引擎的类型。
3.每个UCLASS保留一个称作“类默认对象(Class Default Object)”的对象,简称CDO。
4.新建UObject示例的函数有:
a.NewObject () 创建一个自动生成命名的新实例。在简单情况下使用最佳。
b.NewNamedObject () 使用特定命名以及其他几项任选参数创建一个新实例。将判断新实例的Outer中是否存在命名冲突。
c.ConstructObject () 创建一个提供所有可用创建选项的新实例。仅限需要灵活性时使用。
d.new 用于在特定低层情况下构建对象,如构建函数需要参数时。
5.UObjects提供的功能有:
a.垃圾回收:虚幻引擎实现了一个垃圾回收方案,定期清理不再被引用或被显式标记为待销毁的 UObject。
b.引用更新:对象被垃圾回收清理时,对它的UPROPERTY引用将自动被更新为 NULL。
c.映象
d.序列化:当一个 UObject 被序列化时,所有 UProperty 数值将被自动书写或读取。
e.默认属性变化自动更新:UClass 的CDO发生变化时,引擎将尝试把这些变化智能应用到类的所有实例上(在它们被加载时)。
f.自动属性初始化:初始化时,在构建函数被调用之前,UObject 将被自动清零。
g.自动编辑器整合:编辑器理解 UObjects 和 UProperties,还可将这些数值自动公开进行编辑,而无需编写特殊代码。
h.运行时类型信息可用:UObject 明确其为何种 UClass,运行时可作出类型相关的决定。
i.网络复制:UObject 系统包括一个稳定的功能集,实现网络通讯和多人 游戏 。
6.UObjects的头文件格式:
#include 'Object.h'
#include 'MyObject.generated.h'
UCLASS() //UCLASS 宏使虚幻引擎 4 能识别 UMyObject。
class MYPROJECT_API UMyObject : public UObject //如 MyProject 希望将 UMyObject 类公开到其他模块,则需要指定 MYPROJECT_API。
GENERATED_BODY() //对类进行设置,以支持引擎要求的基础结构。
;
以上是关于UE4基础知识总结(五)的主要内容,如果未能解决你的问题,请参考以下文章