UE 4.27.2 和 UE 5.3.1 自定义模块出现的问题

2023-10-03 20:54
文章标签 模块 问题 自定义 5.3 ue 4.27

本文主要是介绍UE 4.27.2 和 UE 5.3.1 自定义模块出现的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

    • UE4.27.2 和 UE5.3.1 自定义模块的区别
    • 无法打开 uproject,无法使用 uproject 右键菜单重建 vs 项目时,怎么重建 vs 项目
    • 创建 Module 需要注意的地方
    • 为什么是 Modules/ModuleManager.h
    • 为什么 UE 5.3.1 报错找不到 Modules/ModuleManager.h
    • 怎么验证自己的模块是对的

一开始我是看的大象无形这本书,但是做到自定义模块这里一堆错误

自定义模块的过程大概是,按照一定格式创建文件夹和文件,然后将这些文件添加到 VS 工程中

但是期间怎么做是有讲究的

UE4.27.2 和 UE5.3.1 自定义模块的区别

一开始我是想先删掉 immediate 那些文件夹,然后右键 uproject 重建 vs 工程

结果发现,我当前的是 4.27.2 的工程,但是我默认的启动器是 5.3.1 所以没有那个选项

然后我就去 5.3.1 试了一下

其实也没有区别,但是就是 VS 里面的提示可能会不一样

在 5.3.1 里面,我的 #include "Modules/ModuleManager.h" 会报错,IMPLEMENT_MODULE 也会报错

但是实际上这些都是智能提示的报错,只要自己编译成功,我觉得应该是可以忽视的……毕竟我在 4.27.2 中,这些地方也没有报错

无法打开 uproject,无法使用 uproject 右键菜单重建 vs 项目时,怎么重建 vs 项目

我在尝试的时候把 immediate 那些文件夹删了,然后之后就没办法打开 uproject 了,怪

然后从虚幻编辑器的选择界面也没办法打开

然后从 uproject 右键菜单重建 vs 项目时又提示我找不到 UBT

看上去是绝境了……

但是我搜到了别人直接调用 UBT 来生成 vs 项目的例子:

https://forums.unrealengine.com/t/generate-cpp-project-couldnt-find-unrealbuildtool/231288/15?page=3

基本上就是,找到对应版本的虚幻引擎的 UBT,运行 UnrealBuildTool.exe -projectfiles -project="path to your project\project name.uproject" -game -engine -rocket -progress

创建 Module 需要注意的地方

第一个是较新版本的 UE 中

#include "ModuleManager.h"

要改为

#include "Modules/ModuleManager.h"

第二个是要修改 <YourProjectName>.Target.cs<YourProjectName>Editor.Target.cs

ExtraModuleNames.AddRange(new string[] { "<YourProjectName>"});

改为

ExtraModuleNames.AddRange(new string[] { "<YourProjectName>", "<YourCustomModuleName>"});

第三个是 <YourProjectName>.uproject

	"Modules": [{"Name": "<YourProjectName>","Type": "Runtime","LoadingPhase": "Default","AdditionalDependencies": ["Engine"]}],
	"Modules": [{"Name": "<YourProjectName>","Type": "Runtime","LoadingPhase": "Default","AdditionalDependencies": ["Engine"]},{"Name": "<YourCustomModuleName>","Type": "Runtime","LoadingPhase": "Default","AdditionalDependencies": ["Engine"]}],

以上讲到的 <YourProjectName> 要替换为自己的工程名,<YourCustomModuleName> 要替换为自己的模块名

为什么是 Modules/ModuleManager.h

其实你点开引擎这个 VS 项目,比如 UE5/Source/Runtime/Core/Public/Modules 是可以看到 ModuleManager.h 的

这就说明其实只是位置改了

那么这又是 Core 里面的,那么这就很清楚了,在自定义模块的 Build.cs 中设置了 PublicDependencyModuleNames 中添加了 Core,编译之后,VS 应该是会识别到你包含了 Core 这个模块,所以应该是会把 Core 的 Public 文件夹添加到你的包含目录里面的

为什么 UE 5.3.1 报错找不到 Modules/ModuleManager.h

具体来说,在 UE 4.27.2 的包含路径中,我可以找到 Source/Runtime/Core/Public/Modules

在这里插入图片描述

在 5.3.1 中我却找不到,他有一个 Source Directories 是有值的,这里也没有

在这里插入图片描述

所以这就是问题所在……我不知道是什么导致的,可能是 UBT 导致的吧

怎么验证自己的模块是对的

在 UE 工程里面新建 C++ 类的时候,如果看到自己新建的模块是可选的,那么就说明这个模块被加载了

请添加图片描述

这篇关于UE 4.27.2 和 UE 5.3.1 自定义模块出现的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/703

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监

缓存雪崩问题

缓存雪崩是缓存中大量key失效后当高并发到来时导致大量请求到数据库,瞬间耗尽数据库资源,导致数据库无法使用。 解决方案: 1、使用锁进行控制 2、对同一类型信息的key设置不同的过期时间 3、缓存预热 1. 什么是缓存雪崩 缓存雪崩是指在短时间内,大量缓存数据同时失效,导致所有请求直接涌向数据库,瞬间增加数据库的负载压力,可能导致数据库性能下降甚至崩溃。这种情况往往发生在缓存中大量 k

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo