开发手札:UnrealEngine编辑器开发

以前在unity框架中开发了非常多实用且高频使用的编辑器工具,现在准备把目前用得上工具移植到ue4中。

下面说明一下ue4开发编辑器工具的流程。

1.创建编辑器工具控件

2.在控件中创建一个Button和一个EditableText,用于测试

3.新建一个继承UEditorUtilityWidget的类MyEditorUtilityWidget

4.开始编写代码控制Button和EditableText

cpp 复制代码
// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "EditorUtilityWidget.h"
#include "Runtime/UMG/Public/UMG.h"
#include "MyEditorUtilityWidget.generated.h"

/**
 *
 */
UCLASS()
class MYUNREALCLRDEMO2_API UMyEditorUtilityWidget : public UEditorUtilityWidget
{
	GENERATED_BODY()

public:
	UPROPERTY(meta = (BindWidget))
	UButton* Button_Log;

	UPROPERTY(meta = (BindWidget))
	UEditableText* EditableText_Log;

	virtual void NativeConstruct() override;

private:
	UFUNCTION()
	void ButtonLogClick();
};
cpp 复制代码
// Fill out your copyright notice in the Description page of Project Settings.


#include "MyEditorUtilityWidget.h"

void UMyEditorUtilityWidget::NativeConstruct()
{
	Super::NativeConstruct();

	if (Button_Log != nullptr)
	{
		Button_Log->OnClicked.AddDynamic(this, &UMyEditorUtilityWidget::ButtonLogClick);
	}
}

void UMyEditorUtilityWidget::ButtonLogClick()
{
	if (EditableText_Log != nullptr)
	{
		EditableText_Log->SetText(FText::FromString(FString::Printf(TEXT("测试Editor开发"))));
	}
}

PS:只是简单示例一下怎么运行,所以单纯点一下按钮打印一句文字

5.在编辑器工具控件中重置父类为自定义的MyEditorUtilityWidget

这一步很坑爹,我刚开始死活找不到MyEditorUtilityWidget选项,后面直接创建MyEditorUtilityWidget的蓝图类MyEUWBlueprint后,选项就出现了,这不纯搞笑呢?c++类还不能直接继承了...

6.右键选择运行编辑器工具控件,则打开了编辑器窗口

7.最终可得运行效果

最后,移植功能最方便的还是AI翻译,足以完成70%移植工作量