专栏/【UE4_C++】<10-1>C++与UE4的集成-编辑器的拓展部分——创建新的编辑器模块

【UE4_C++】<10-1>C++与UE4的集成-编辑器的拓展部分——创建新的编辑器模块

2020年04月09日 04:29--浏览 · --点赞 · --评论
粉丝:1173文章:113

本章内容包含以下几点:

  • 创建新的编辑器模块

  • 创建新的工具栏

  • 创建新的菜单项

  • 创建新的编辑器窗口

  • 创建新的资源类型

  • 为创建资源自定义上下文菜单项

  • 创建新的控制台命令

  • 为Blueprint创建一个新的节点可视化工具

  • 使用自定义详细信息面板检查类型

一、创建新的编辑器模块

之后的例子都与特定于编辑器模式的代码和引擎模块进行交互。因此,创建一个只在引擎以编辑器模式运行时才会加载的新模块被认为是一种良好的做法,这样我们就可以将所有仅用于编辑器的代码放入其中。

使用文本编辑器打开:

{
    "FileVersion"3,
    "EngineAssociation""4.20",
    "Category""",
    "Description""",
    "Modules": [
        {
            "Name""NewTutorialProject",
            "Type""Runtime",
            "LoadingPhase""Default",
            "AdditionalDependencies": [
                "Engine",
                "CoreUObject"
            ]
        },
        {
            "Name""NewTutorialProjectEditor",
            "Type""Editor",
            "LoadingPhase""PostEngineInit",
            "AdditionalDependencies": [
                "Engine",
                "CoreUObject"
            ]
        }
        
    ]
}


添加模块:

重新生成代码:

在Source文件夹中创建新文件夹:

文件夹中新建一个空txt文件并且重命名:

修改新生成的Target.cs文件:

修改新建的Build.cs文件:

using UnrealBuildTool;

public class NewTutorialProjectEditor : ModuleRules
{
    public NewTutorialProjectEditor(ReadOnlyTargetRules Target) :
    base(Target)
    {
        PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

        PublicDependencyModuleNames.AddRange(new string[] {"Core",
        "CoreUObject""Engine""InputCore""RHI""RenderCore",
        "ShaderCore""MainFrame""AssetTools""AppFramework",
        "PropertyEditor"});

        PublicDependencyModuleNames.Add("NewTutorialProject");

        PrivateDependencyModuleNames.AddRange(new string[] {
        "UnrealEd""Slate""SlateCore""EditorStyle",
        "GraphEditor""BlueprintGraph" });

    }
}




再创建两个文件:

重新生成代码:

添加代码:

NewTutorialProjectEditor.h

#pragma once

#include "Engine.h"
#include "Modules/ModuleInterface.h"
#include "Modules/ModuleManager.h"
#include "UnrealEd.h"


class FNewTutorialProjectEditorModule : public IModuleInterface
{

};

NewTutorialProjectEditor.cpp

#include "NewTutorialProjectEditor.h"
#include "Modules/ModuleManager.h"
#include "Modules/ModuleInterface.h"

IMPLEMENT_GAME_MODULE(FNewTutorialProjectEditorModule, NewTutorialProjectEditor)


编译一下,成功即可 :





投诉或建议