首页 > 其他分享 >UE4中的GamePlay模块

UE4中的GamePlay模块

时间:2023-11-04 13:55:50浏览次数:23  
标签:文件 编译 模块 cs UE4 NewGamePlayMo GamePlay

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

UBT

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

创建项目

在Source文件夹下创建一个新的文件夹,该文件夹为一个新的GamePlay模块,在该文件夹下添加Name.Bulid.cs文件。
image

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文件夹中。
image
image

标签:文件,编译,模块,cs,UE4,NewGamePlayMo,GamePlay
From: https://www.cnblogs.com/XTG111/p/17809251.html

相关文章

  • UE4中的C++编程简介
    对官方文档的学习链接利用UE创建一个C++基类在编辑器中可以选择父类,根据这个父类我们可以创建一个基类用于后续的蓝图类制作。以Actor父类为例创建基类,其头文件会包含一个构造函数,一个Tick函数的重载和一个BeginPlay函数的重载。BeginPlay函数告诉Actor以可运行状态进入了游戏......
  • tkinter模块
    以下内容参考的是:PythonGUI开发手册(化学工业出版社)一、创建一个空白窗口:fromtkinterimport*win=Tk()win.title("MyGUI")win.mainloop()二、设置窗口属性:1、设置窗口样式的相关方法及其含义:title()geoemetry("widthxheight") 设置窗口标题maxsize() ......
  • Python之openpyxl模块的学习
    简介之前针对Excel的读取都是使用的xlrd模块,但是在一次实践中发现xlrd模块去掉了对xlsx格式的支持,因此改用openpyxl。以下内容仅包含使用openpyxl读取Excel文档的操作,并且比较浅显,更多内容请参考官方文档。注:一个excel就是一个工作簿(workbook),一个工作簿含有多个工作表(sheet)实......
  • angie njs 模块试用
    angienjs是一个类似lua的模块,提供了基于js进行nginx功能开发的能力(但是目前没有nginxlua模块强大)以下是一个简单试用环境准备基于了以前测试nginxlua模块的基础镜像http.js functionfoo(r){r.log("hellofromfoo()handler");return......
  • angie nginx_lua 模块使用
    angie包含了不少社区模块,docker镜像更加方便,都已经安装了,以下是一个测试lua模式的使用因为默认官方构建的是一个动态扩展模块,对于三方lua模块安装不是很方便,我参考了openresty对于luarocks的支持,这样我们自己安装三方lua模块就比较方便的构建支持luarocks的dcoker镜......
  • 爬虫之requests模块
    一、爬虫介绍1、2、二、requests模块1、2、三、携带请求参数1、2、四、url编码和解码1、2、五、携带请求头1、2、六、发送post请求1、2、七、携带cookie1、2、八、响应对象1、2、九、高级用法1、2、......
  • 振弦采集读数模块如何连接设备
    振弦采集读数模块如何连接设备振弦采集读数模块是一种可以用来监测物体振动情况的设备,可以应用在机器运转状态监测、结构健康监测、地震测量等领域。它主要通过传感器对物体的振动进行监测,并将监测到的数据输出到计算机或其他设备上,以便进行分析和判断。 要使用振弦采集读数......
  • jar包的精细化运营,Java模块化简介 | 京东云技术团队
    图:模块化手机概念一、什么是Java模块化Java模块化(module)是Java9及以后版本引入的新特性。官方对模块的定义为:一个被命名的,代码和数据的自描述集合。(themodule,whichisanamed,self-describingcollectionofcodeanddata)。早在Java7的时候就被提出,但由于其复杂性,不断跳票,直......
  • Ansible操作MySQL常用的几个模块
    1. mysql_user模块mysql_user模块用来添加,删除用户以及设置用户权限创建MySQL数据库的用户与口令(非root@localhost用户),直接通过playbooks中的案例来说明吧。-name:创建MySQL数据库用户--user_testmysql_user:#-----登陆数据库login_host:"localhost"......
  • pyttsx3模块
    1、介绍pyttsx3模块是python的一个第三方模块,作用是进行语音合成。无需请求api,本地合成,可以不受次数和字数限制技术相对成熟,应用广泛,使用方便2、pyttsx3.speak函数importpyttsx3pyttsx3.speak('你指尖跃动的电光,是我此生不灭的信仰')这是该模块最简应用,调用speak函数时......