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

文章讲述了作者在使用UE4.27.2和UE5.3.1创建自定义模块时遇到的问题,包括不同版本间ModuleManager.h路径的变化,以及如何在VS工程中正确配置和验证模块。作者分享了解决找不到ModuleManager.h和重建VS项目的方法。

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

自定义模块的过程大概是,按照一定格式创建文件夹和文件,然后将这些文件添加到 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++ 类的时候,如果看到自己新建的模块是可选的,那么就说明这个模块被加载了

请添加图片描述

<think>好的,我现在需要帮助用户解决在Unreal Engine中遇到的Alpha通道不可见的问题。用户已经按照之前的建议进行了操作,包括修改Texture Format为RGBA8或BC7,调整Texture Group为UI/Effects,关闭Mipmaps,但仍然看不到Alpha Channel选项,但UE的纹理面板显示拥有Alpha通道为真。 首先,我需要分析可能的原因。用户已经执行了基础步骤,但问题依旧存在,说明可能存在更深层次的设置问题或引擎本身的bug。接下来,我需要考虑几个方面: 1. **压缩格式冲突**:虽然用户已经将格式改为RGBA8或BC7,但可能引擎的压缩设置覆盖了这些更改,或者某些平台特定的设置导致问题2. **纹理组的影响**:调整Texture Group到UI/Effects可能仍然有隐藏的设置影响Alpha通道的显示。 3. **Mipmaps生成设置**:关闭Mipmaps可能有完全生效,或者残留的Mipmaps数据导致问题4. **引擎版本或插件冲突**:用户可能使用的是较新版本的UE,可能存在已知的bug,或者安装的插件干扰了纹理设置。 5. **材质或实例中的覆盖**:可能在材质中手动覆盖了Alpha通道的使用,导致UI不显示选项但实际存在。 6. **项目设置或配置文件问题**:项目中的某些配置可能强制关闭了Alpha通道的显示,需要手动修改配置文件。 7. **缓存或刷新问题**:引擎可能有正确刷新纹理设置,需要清除缓存或重新导入纹理。 接下来,我需要逐一排查这些可能性,并给出对应的解决方案。例如,检查压缩格式是否确实应用成功,可能需要用户验证导出后的纹理信息。另外,引擎版本的问题可能需要用户检查更新日志或社区反馈。材质中的覆盖可能需要用户检查材质节点是否忽略了Alpha通道。此外,清除派生数据缓存或重启引擎也是常见的解决方法。 还需要考虑用户可能的操作失误,比如是否在修改设置后保存并重新打开了纹理,或者是否有其他设置相互冲突。最后,如果所有方法都无效,建议用户提供更多信息,如引擎版本纹理文件示例,以便进一步诊断。</think>--- ### **问题诊断** 当纹理属性显示`拥有Alpha通道:真`,但Details面板中**仍无Alpha Channel选项**时,表明引擎底层已识别Alpha数据,但UI显示逻辑被强制覆盖。以下是针对性解决方案: --- ### **核心原因** 1. **材质编辑器或实例覆盖**:材质中通过`Texture Sample`节点显式指定了Alpha处理逻辑。 2. **平台特定压缩规则**(如Android/IOS):不同平台的纹理格式限制可能隐藏Alpha选项。 3. **编辑器缓存残留**:旧版本纹理参数未被完全清除。 --- ### **分步解决方案** #### **1. 验证实际Alpha数据** - **操作**: 1. 在纹理预览窗口 → 点击**通道视图**(红/绿/蓝/Alpha)→ 确认Alpha通道有实际数据。 2. 若Alpha通道为全白(值=1),引擎会判定为“无实际透明需求”并隐藏选项。 --- #### **2. 强制刷新纹理参数** - **步骤**: 1. 右键点击纹理资源 → **重新导入(Reimport)** → 勾选`覆盖现有设置`。 2. 导入时选择**TGA/EXR格式** → 强制保留Alpha通道。 - **原理**: - 重新导入会重置引擎内部对纹理的格式判断逻辑。 --- #### **3. 检查平台特定设置** - **操作**: 1. 打开**Project Settings → Platforms → Target Platform**(如Android)。 2. 找到`纹理压缩设置` → 禁用`Strip Alpha Channel`选项。 - **示例路径**: ``` Android → Texture Compression → 取消勾选"Remove Alpha Channel" ``` --- #### **4. 通过材质编辑器反向验证** - **步骤**: 1. 新建材质 → 添加`Texture Sample`节点并连接Alpha引脚。 2. 若材质可正常使用Alpha数据(如控制不透明度),则说明Alpha通道实际有效,但UI显示异常。 - **结论**: - 此情况属于引擎UI的Bug,可忽略面板显示,直接通过代码或材质逻辑调用Alpha。 --- #### **5. 清除引擎派生数据缓存** - **操作**: 1. 关闭UE编辑器。 2. 删除项目目录下: ``` Saved/DerivedDataCache Saved/AssetRegistryCache ``` 3. 重启项目 → 重新打开纹理检查。 --- ### **高级排查方案** #### **方案一:直接编辑纹理配置文件** - **步骤**: 1. 找到纹理的`.uasset`文件 → 右键**Edit with Text Editor**。 2. 搜索`AlphaChannel`属性 → 手动改为: ``` AlphaChannel=True bUseAlphaChannel=True ``` 3. 保存 → 强制在资源层面锁定Alpha。 #### **方案二:命令行强制启用** - 在Output Log中输入: ``` SetTexture [TextureName] AlphaChannelEnabled 1 ``` - 替换`[TextureName]`为纹理完整路径(如`/Game/Textures/MyTexture.MyTexture`)。 --- ### **终极验证方法** 1. 新建空白测试纹理(带Alpha的PNG) → 导入UE2. 若新纹理可显示Alpha选项 → 原文件存在元数据污染,需**重新导出原始文件**。 3. 若新纹理同样无选项 → 确认引擎版本是否存在已知Bug(如UE5.1-5.2部分版本)。 --- ### **已知引擎Bug临时解决方案** - **现象**:UE5.3中BC7格式纹理偶发Alpha选项丢失。 - **修复方式**: 1. 下载并安装引擎补丁**5.3.1 Hotfix**。 2. 或回退版本至UE5.0/UE4.27。 --- ### **操作流程图** ``` [问题存在] → 重新导入纹理 → 检查Alpha预览 → ↓ [Alpha数据有效] → 清除缓存/修改平台设置 → 验证UI显示 ↓ [仍无效] → 手动编辑.uasset文件或使用命令行强制启用 ``` --- ### **总结** 若确认Alpha数据真实存在且格式正确,但UI未显示选项,则属于**引擎显示层与数据层的逻辑冲突**。此时无需纠结面板显示,直接通过材质或代码调用Alpha通道即可。如追求UI显示完整,建议升级引擎版本或等待官方修复补丁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值