UE4中的GamePlay模块
链接
该文档主要通过学习自己构建文件,形成GamePlay模块。下图是利用引擎创建的一个空模板C++代码结构

简要流程

UBT
虚幻编译工具(UBT:Unreal Build Tool)是一个自定义工具,负责管理通过各种编译配置来编译虚幻引擎4(UE4)源代码的过程。该工具处理所有复杂的项目编译工作,编译UE4的逐个模块并处理依赖等。我们编写的Target.cs,Build.cs都是为这个工具服务的。 并将项目与引擎关联起来。该过程以透明方式进行,只需通过标准的Visual Studio 构建工作流程构建项目即可。
在项目的目录查找依赖性时,会忽略IDE解决方案文件,而是去查找Build.cs文件,如果没有该文件就不会被UBT发现,进而不会被编译。
创建项目
在Source文件夹下创建一个新的文件夹,该文件夹为一个新的GamePlay模块,在该文件夹下添加Name.Bulid.cs文件。

using UnrealBuildTool;
public class NewGamePlayMo: ModuleRules
{
public NewGamePlayMo(ReadOnlyTargetRules Tartget): base(Tartget)
{
//模块依赖函数,比如之后的AIModule也需要在Build.cs文件中添加,这样才能编译AI
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });
}
}
创建[Name]Module的cpp文件,使得引擎可以进行卸载和加载
//NewGamePlayMoModule.cpp
#include "Modules/ModuleManager.h"
IMPLEMENT_PRIMARY_GAME_MODULE(FDefaultGameModuleImpl, NewGamePlayMo,"NewGamePlayMo");
这段代码为模块提供了默认实现。但是,对于大部分Gameplay模块,此默认实现对于加载和卸载你的模块是足够的。
可以手动编写该模块的类、其构造函数以及启动和关闭函数,创建更详细的实现。即该文件决定了这个模块下的类的实现方式
编译模块
右键.uproject文件,generate visual studio files重新生成IDE解决方案。使得新添加的GamePlay模块可见
注册模块
为了使能够在项目中使用我们自己新建的GamePlay模块,需要在.uproject文件中注册模块
//CreateModule.uproject
{
"FileVersion": 3,
"EngineAssociation": "4.27",
"Category": "",
"Description": "",
"Modules": [
{
"Name": "CreateMoudle",
"Type": "Runtime",
"LoadingPhase": "Default"
},
{
"Name": "NewGamePlayMo",
"Type": "Runtime"
}
]
}
可以使用此列表条目来配置它将在哪个 加载阶段(Loading Phase)中加载,以及其类型(Type)
接下来需要将新建的模块添加到UE自己创建的Bulid.cs文件中
//CreateModule.Build.cs
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "NewGamePlayMo" });
编译运行后,创建C++类就可以选择在NewGamePlayMo模块下建立,表现为cpp和h文件出现在NewGamePlayMo文件夹中。


UE4中的GamePlay模块的更多相关文章
- UE4 中Struct Emum 类型的定义方式 笔记
UE4 基础,但是不经常用总是忘记,做个笔记加深记忆: 图方便就随便贴一个项目中的STRUCT和 Enum 的.h 文件 Note:虽然USTRUCT可以定义函数,但是不能加UFUNCTION 标签喔 ...
- UE4 RHI与Render模块简解
UE4中的RHI指的是Render hardware interface,作用像Ogre里的RenderSystem,针对Dx11,Dx12,Opengl等等平台抽象出相同的接口,我们能方便能使用相同 ...
- UE4中C++编程(一)
一: C++工程和Gameplay框架 GameInstance 它适合放置独立于关卡的信息,比如说显示UI. GameMode 表示游戏玩法, 包含游戏进行的规则和胜利条件等等信息,游戏模式是和关卡 ...
- 如何在Meteor中使用npm模块?
首先,请在AtmosphereJs上搜索有无相关的封装包.尽量采用已有的封装包,而不是自己封装. 有两种方法在项目中使用来自npm的模块. 封装为Meteor包并在项目中添加包.使用meteor cr ...
- UE4 中在 Actor 中动态 Create Component 与ChildActor 的 小笔记
Note:旧版本的UE4 的Attach 和12.13版本有些不一样 创建Component: UCpp_MyComponent* temp_imageCom = NewObject<UCpp_ ...
- Python中的random模块,来自于Capricorn的实验室
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
- UE4中使用数据表(Data Table)
本文依据官方文档数据驱动游戏性元素整理而来. 做过游戏的应该都清楚,如果游戏稍微有点规模,那么使用数据驱动来做游戏一般是必不可少的一步,一般也就是策划通过本表的方式来解决.下面我们来简单说一下UE4中 ...
- Python中的logging模块
http://python.jobbole.com/86887/ 最近修改了项目里的logging相关功能,用到了python标准库里的logging模块,在此做一些记录.主要是从官方文档和stack ...
- 充分利用 UE4 中的噪声
转自:https://www.unrealengine.com/zh-CN/blog/getting-the-most-out-of-noise-in-ue4 UE4 推出基于材质的程序式噪声已经有一 ...
- Chrome中的Device模块调式响应性设计
Chrome中的Device模块调式响应性设计 阅读目录 启用Device模块 Device模块设置介绍 自定义预设介绍 查看media queries 触发触摸事件 回到顶部 启用Device模块 ...
随机推荐
- Swoole从入门到入土(10)——HTTP服务器[初步接触]
讨论完了TCP服务器,接下来的话题就是HTTP服务器.HTTP这个协议"一般"是搭载在TCP协议上实现的. 注意,这里用"一般"是以前多数是这样做的,在&quo ...
- 通过performance_schema获取造成死锁的事务语句(转)
数据库日常维护中我们经常遇到死锁的问题,由于无法获取造成死锁的事务内执行过的语句,对我们死锁的分析造成很大的困难.但是在MySQL 5.7中我们可以利用performance_schema来获取这些语 ...
- Linux下Mysql的相关配置
Linux下Mysql的配置 安装 rmp -ivh MySQL-server-4.1.22-0.glibc23.i386.rpm --nodeps rmp -ivh MySQL-client-4. ...
- 从 vs 的 rc 文件中获取版本号
更新项目版本号时,需要与 rc 文件的 version 同步,比较方便的方法是直接从 rc 文件中获取版本号,并应用到程序中 // 删除日志检查 bool GetVersion() { // get ...
- 文件IO操作开发笔记(二):使用Cpp的ofstream对磁盘文件存储进行性能测试以及测试工具
前言 在做到个别项目对日志要求较高,要求并行写入的数据较多,尽管写入数据的线程放在子线程,仍然会造成界面程序的假死(实际上Qt还是在跑,只是磁盘消耗超过瓶颈,造成假死(注意:控制台还能看到打印输出 ...
- 重点:递归函数,数学模块,随机模块---day14
1.递归函数 自己调用自己的函数是递归函数 递:去 归:回 一去一回叫作递归 简单递归 def digui(n): print(n,'<==1==>') if n > 0: digu ...
- 通过命令修改git提交的注释信息
1.修改最新一条 commit 注释信息 通过 git commit --amend 命令修改注释信息,然后:wq 进行保存,再重新提交 2. 修改多条 commit 注释信息 输入命令:git re ...
- git修改地址三种方法
1.修改命令 git remote set-url origin [NEW_URL] 2.先删后加 git remote rm origin git remote add origin [url]3. ...
- 【Application Insights】使用CURL命令向Application Insgihts发送测试数据
问题描述 在使用App Service或者Kubernetes等服务时,需要收集一些日志数据并且发送到Application Insights中,当使用SDK或者是服务自带的Application I ...
- FolkMQ 是怎样进行消息的事务处理?
FolkMQ 提供了二段式提交的事务提交的机制(TCC 模型).允许生产者在发送消息时绑定到一个事务中并接收事务的管理,以确保消息的原子性(要么全成功,要么全失败).在 FolkMQ 中,事务是通过 ...