UE4添加模块

添加模块在这篇文章里已经有详细的描述了:

https://orfeasel.com/creating-custom-modules/

但是这篇文章中少写了一个步骤:

最后要在

  <工程名>Editor.Target.cs

以及

  <工程名>.Target.cs

中做一点修改:

ExtraModuleNames.AddRange( new string[] { ... } ); 

这里也要加入新的模块名称字符串。在4.21中实际测试发现只有这样才能正常编译。

下面举一例子,给一个名称为Test的工程添加一个叫做Ken的模块。

Ken.h:

#pragma once
#include "CoreMinimal.h"
#include "ModuleManager.h"
class FKen:public IModuleInterface
{
    public:
    /** IModuleInterface implementation */
    virtual void StartupModule() override;
    virtual void ShutdownModule() override;
};

Ken.cpp:

#include "Ken.h"
#include "Modules/ModuleManager.h"
#define LOCTEXT_NAMESPACE "FKen"
void FKen::StartupModule()
{    
UE_LOG(LogTemp, Warning, TEXT("KEN MODULE Start"));
}
void FKen::ShutdownModule()
{
    UE_LOG(LogTemp, Warning, TEXT("KEN MODULE End"));
}
IMPLEMENT_MODULE(FKen, Ken)
#undef LOCTEXT_NAMESPACE

Ken.Build.cs文件:

// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.
using UnrealBuildTool;
public class Ken : ModuleRules
{
    public Ken(ReadOnlyTargetRules Target) : base(Target)
    {
        PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;    
        PublicIncludePaths.AddRange(
            new string[] {
                // ... add public include paths required here ...
            }
            );    
        PrivateIncludePaths.AddRange(
            new string[] {
                // ... add other private include paths required here ...
            }
            );
        PublicDependencyModuleNames.AddRange(
            new string[]
            {
                "Core",

                // ... add other public dependencies that you statically link with here ...
            }
            );
        PrivateDependencyModuleNames.AddRange(
            new string[]
            {
                "Test",
                "Projects",
                "InputCore",
                "UnrealEd",
                "LevelEditor",
                "CoreUObject",
                "Engine",
                // ... add private dependencies that you statically link with here ...    
            }
            );
        DynamicallyLoadedModuleNames.AddRange(
            new string[]
            {
                // ... add any modules that your module loads dynamically here ...
            }
            );
    }
}

Test.Target.cs文件:

using UnrealBuildTool;
using System.Collections.Generic;

public class TestTarget : TargetRules
{
    public TestTarget(TargetInfo Target) : base(Target)
    {
        Type = TargetType.Game;

        ExtraModuleNames.AddRange( new string[] { "Test","Ken" } );
    }
}

TestEditor.Target.cs文件:

using UnrealBuildTool;
using System.Collections.Generic;

public class TestEditorTarget : TargetRules
{
    public TestEditorTarget(TargetInfo Target) : base(Target)
    {
        Type = TargetType.Editor;

        ExtraModuleNames.AddRange( new string[] { "Test","Ken" } );
    }
}

 

 

请使用手机"扫一扫"x

转载于:https://www.cnblogs.com/AnKen/p/10654600.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值