UE4 虚幻引擎,模块和引擎结构

 

h文件也叫头文件,通常包含函数类型和函数声明。cpp文件包含这些类型和函数的实现代码。偶尔也会发现一些以inl后缀结尾的文件,这些是内联头文件,它们会在头文件中实现函数,但很少被用到。

1、模块

你为项目或代码编写的所有代码文件都必须位于模块中,模块就是硬盘中的一个文件夹,包含名为“Build.cs”的c#文件,用于描述模块的编译方法。当你编译项目或插件时,UBT会将所有模块编译成中间库,根据你使用整体构建还是非整体构建,这些模块会被编译成静态库或者动态库。

你在模块中写的所有代码可以分成两部分,有一部分只有模块内部可以访问就像是模块实现中的秘密,一些模块则可以把函数暴露给其他模块,于是它们就可以在其他地方使用。并非所有模块都提供公共接口,但有些会提供。Private私有实现文件,通常位于“Private”子目录中,我们的插件只包含默认实现的代码,所有对其他模块可见的代码通常都位于“Public”目录下。

你编写的所有头文件和cpp文件都应该根据其他模块是否访问它们放置在“Public”或“Private”目录中

在默认情况下虚幻引擎启动器为你单独创建一个模块,它与项目本身同名。

2、引擎结构

Development(开发)目录,它们是开发人员使用的目录,包含的都是开发阶段使用的模块,它们可能是调试工具或者是内容开发人员用来制作游戏的工具,这些模块永远不会发布给最终用户。

Editor(编辑器)目录,保存所有编辑器文件的目录。

Runtime(运行时)目录,包含了形形色色的模块,它们可以用于任何地方,无论是游戏中,编辑器中或是独立应用中Runtime文件夹主要包含了你经常使用的核心功能。

ThirdParty(第三方)目录,其中包含了所有并非有Epic Games编写的代码和模块,我们的引擎用到了许多由其他公司或其他人编写的库,我们会尽可能地重复使用文件避免我们做无用功。

3、宏

这个宏“TEXTASSET_API”是自动为你生成的,每当你新建一个模块时,都会声明一个宏,名称以模组名开头,全部大写,然后是“_API”。这样做的作用是将模块暴露出来,这样其他模块也能使用它。

 

“UCLASS”宏会告诉虚幻构建工具,这个类是一个需要解析的基于UObject的t 类,所以UBT或说的更具体一点,UBT的子组件“虚幻头文件工具”(UHT)会解析所有头文件查找所有宏,如果找到了,它将自动生成所有粘合代码,以便提供序列化、垃圾回收、运行时内省等功能。这些代码都会生成在一个以“generation.h”结尾的文件中,文件的名称和你的类名一样,只是少了"U",然后加上".generated.h"。

 

将我们的资源与蓝图整合,这很简单,我们会在宏在添加并使用一些特殊属性。这里,在UCLASS声明中,我们用到了“蓝图类”(BlueprintType),这能让UBT生成代码以便在蓝图中使用这个资源类。

UFactory"资源工厂"

资源工厂也是C++类,它们继承自一种特殊类型的UObject类叫做UFactory,这是所有资源工厂类的基类。许多你需要用到的功能,比如拖放支持实际上都已经在编辑器中实现了,所以不用你担心。编辑器基本上只是调用UFactory类,你可以覆盖一些函数,如果要执行某些特定操作,你只需要为那些特定操作编写代码,剩下90%的代码都已经为你实现了。

你会遇到三种不同类型的资源工厂,一种工厂用于内容浏览器的快捷菜单的集成,也就是在内容浏览器中右键点击,显示菜单后你会看到所有不同类型的可创建资源。

然后通常会有一个单独的工厂,用于拖放支持有时你会看到负责自动重新导入的单独工厂类,尽管最近重新导入主要被当做拖放操作的一部分来处理。

Automatic Reimport重新导入,允许你将文件拖入内容浏览器后自动监视文件系统对文件的改动。

 

 

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值