一、引言
因为很多时候,我们通过C++代码写的 Actor 或者 Character、AnimInstance等等。在本项目还好,如果我们希望这个类能够在其他项目中使用,达到通用的效果。那么简单点的方法,可以通过复制,然后修改项目名称等等。如果类过多,频繁的手动修改名称,会导致很多不可预料的事情发生。所以经过我通过官网和哔哩哔哩等平台,找到一个简便的方法,在此记录下我的学习成果。可以通用,并不修改太多代码文件的方法。
二、封装代码到模块,并引用
1.新建模块文件夹,将公用类放入到文件夹中:
2.添加模块引用,在主模块的build类(ZhangJiajie.Build)中,加上公共模块的引用。我这里是 UECpp
// Fill out your copyright notice in the Description page of Project Settings.
using UnrealBuildTool;
public class ZhangJiajie : ModuleRules
{
public ZhangJiajie(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" ,"UECpp"});
PrivateDependencyModuleNames.AddRange(new string[] { });
// Uncomment if you are using Slate UI
// PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
// Uncomment if you are using online features
// PrivateDependencyModuleNames.Add("OnlineSubsystem");
// To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true
}
}
3.在 ZhangJiajie.uproject 加入公共模块的引用
{
"FileVersion": 3,
"EngineAssociation": "4.25",
"Category": "",
"Description": "",
"Modules": [
{
"Name": "ZhangJiajie",
"Type": "Runtime",
"LoadingPhase": "Default",
"AdditionalDependencies": [
"Engine"
]
},
{
"Name": "UECpp",
"Type": "Runtime",
"LoadingPhase": "Default",
"AdditionalDependencies": [
"Engine"
]
}
],
"Plugins": [
{
"Name": "NiagaraExtras",
"Enabled": true
}
]
}
4.在 ZhangJiajie.Target,ZhangJiajieEditor.Target 文件中分别引用公共模块UECpp
// Fill out your copyright notice in the Description page of Project Settings.
using UnrealBuildTool;
using System.Collections.Generic;
public class ZhangJiajieTarget : TargetRules
{
public ZhangJiajieTarget(TargetInfo Target) : base(Target)
{
Type = TargetType.Game;
DefaultBuildSettings = BuildSettingsVersion.V2;
ExtraModuleNames.AddRange( new string[] { "ZhangJiajie" } );
ExtraModuleNames.AddRange(new string[] { "UECpp" });
}
}
// Fill out your copyright notice in the Description page of Project Settings.
using UnrealBuildTool;
using System.Collections.Generic;
public class ZhangJiajieEditorTarget : TargetRules
{
public ZhangJiajieEditorTarget(TargetInfo Target) : base(Target)
{
Type = TargetType.Editor;
DefaultBuildSettings = BuildSettingsVersion.V2;
ExtraModuleNames.AddRange( new string[] { "ZhangJiajie" } );
ExtraModuleNames.AddRange(new string[] { "UECpp" });
}
}
4.删除 Intermediate 文件夹
5.重新构建代码
6.打开引擎后的展示效果如下,可以看到公共模块已经显示出来了: