开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

Unreal Engine4

关注:330

当前位置:游戏蛮牛 技术专区 Unreal Engine4

查看: 152|回复: 0

[UE4教程] 虚幻4蓝图编译剖析(二)

[复制链接]  [移动端链接]
5熟悉之中
982/1000
排名
3057
昨日变化
14

195

主题

231

帖子

982

积分

Rank: 5Rank: 5

UID
128653
好友
0
蛮牛币
2189
威望
0
注册时间
2015-11-12
在线时间
137 小时
最后登录
2017-3-29
发表于 2017-1-11 11:42:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x

虚幻4编译相关术语和类图

虚幻引擎中的蓝图编译跟常规的程序编译多少是有一些不同的地方,但是基本原理是相通的。我们以普通的类蓝图为例,一个类中包含多个图,每个图中又可以包含一些子图。一个图会包含很多的节点(UEdGraphNode),每个节点可以包含若干引脚(UEdGraphPin)用来连接两个节点。节点又分为执行节点和纯节点(Pure node,上面没有执行引脚)。还有一个模式类(UEdGraphSchema)用于验证语法是否正确等。类图如下所示:

1.png

图(UEdGraph)

虚幻4中许多其它的也是使用图来实现的,所以它也有许多的派生类,比如UAIGraph、UGraph、UAnimationStateMachineGraph、UMaterialGraph等等。类图如下所示:

2.png

节点(UEdGraphNode)

一个有向无环图是由无数节点组成的,这个节点就是UEdGraphNode,因为上面提到的图中有支持各种功能的图,所以也就有各种各样的节点,下面我们只摘取一些节点类型,由于我们重点是讲解蓝图编译,所以我们把主要精力放在UK2Node上面,这个节点是所有蓝图节点的基类。类图所示:

3.png

引脚(UEdGraphPin)

每个节点上可以有多个节点,输入、输出节点以及参数引脚等等,这些引脚用于记录跟哪些引脚相连、类型、默认值等。


模式(UEdGraphSchema)

用于语法检查(看两个引脚是否可以相连、尝试连接引脚)等功能,如上面所有因为有多种图所以就需要多种模式。蓝图使用的是UEdGraphSchema_K2,动画以及UMG会有自己的Schema。类图如下所示:

4.png

FKismetCompilerContext

真正执行编译工作的类,每编译一次就会生成一个新的实例,用来存储编译类的引用以及蓝图等。整个编译过程又分为好多步,是在Compile()函数里面做的。

5.png

FKismetFunctionContext

持有编译一个函数的所有信息,包括指向相关图(UEdGraph)的引用、属性以及生成的函数等。

FBlueprintCompiledStatement

编译过程中的单位工作。编译把节点翻译成一系列编译的语句,然后编译器后端会把它编译成字节码。例如变量赋值、goto、调用(call)等。

FBPTerminal

图中的一个终结点(字面量、常量、或者变量引用)。每一个数据引脚都跟其中的一个相关联。你可以自己在NodeHandlingFunctor里面来生成自己的项,用来存储变量、中间结果等。

FNodeHandlingFunctor

用来处理一类节点编译的帮助类,包含用于注册引脚连接的函数(RegisterNets()),以及生成编译语句(FBlueprintCompiledStatement)。通过UK2Node::CreateNodeHandler()函数来创建。如下类图只列举了几个HandlerFunctor。

6.png

FBlueprintCompileReinstancer

在编译基本完成的时候,由于类可能已经改变了大小或者有新的属性被添加或删除了,那么编译器需要重新实例化我们刚刚编译类生成的对象实例,生成一个新的,然后使用CopyPropertiesForUnrelatedObjects()函数来把旧的实例中的数据拷贝到新的实例中去。


FKismetCompilerOptions

编译选项,用于指定编译时的设置,包括编译类型(只编译Skeleton, 全部编译、只生成字节码、只生成cpp)等。

Skeleton Class

Skeleton类如其名字定义是一个骨架类,在添加成员变量或者成员函数时都会重新重新(它里面没有代码和自动生成的隐藏变量)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表