UE5編輯器開發(二):實現自定義編輯模式(EdMode)

最近又遇到瞭個UE編輯器開發的坑,最後發現很簡單就能解決,但相關資料並不好找,隻能靠看UE代碼和揣摩,其中腦殼疼之處一言難盡。。當然這與此文無關,隻是我個人深深地感到需要寫點編輯器開發的東西,抒發一下情懷,也或許能幫到一些UE開發的仁兄們 :)

本文基於release 5.1.1開發

為瞭圖個方便,可以直接從UE中創建一個自定義編輯模式

創建出來後可以看到已經有一些基礎功能,如切換tab,創建線條

b831d31c2047da8531b8d074121fafc1

這個demo的功能還是略顯簡單,再看代碼,發現它的EdMode繼承於UEdMode

而如果看瞭UE別的編輯模式的代碼就會發現,它們大部分繼承於FEdMode父類,再仔細一看,UEdMode直接繼承於UObject,這可能相比於FEdMode靈活一點,但是如果要用到鼠標Click事件,Move事件的話則需要同時繼承別的父類,不如FEdMode把基本EdMode常用的事件函數都包圓瞭,因此本文後續還是改成基於FEdMode父類來寫。

UE5.2的PCG實在牛啊,為瞭追隨大佬的腳步,咱也幹個超級簡單的“點植被”工具吧!

因為會開源代碼,此處就不粘貼函數實現瞭

1)定義編輯模式主類

  • Enter:進入編輯模式觸發
  • Exit:退出編輯模式觸發
  • HandleClick:點擊觸發
  • InputKey:鼠標鍵盤輸入時觸發
  • 其他很多,需要用時可以直接看源碼,顧名即可思義

class FAntTestEdMode : public FEdMode
{
public:
const static FEditorModeID EM_AntTestEdModeId;

public:
FAntTestEdMode();
virtual void AddReferencedObjects(FReferenceCollector& Collector) override;

// FEdMode interface
virtual void Enter() override;
virtual void Exit() override;
virtual bool HandleClick(FEditorViewportClient *InViewportClient, HHitProxy *HitProxy, const FViewportClick &Click) override;
virtual bool InputKey(FEditorViewportClient *InViewportClient, FViewport *InViewport, FKey InKey, EInputEvent InEvent) override;

void RefreshDetailPanel();

UAntTestEdModeObject* UISettings;
};

发表回复

相关推荐

Excel常用函数的介绍

你没有看错哦,下面的内容是一份很好的Excel常用函数总结,也是工作中经常使用的函数操作,学习Excel常用函数,不要求你必须 ...

· 3分钟前

進口咖啡品牌排行榜前十名

作為上班族,咖啡簡直就是必備飲品。 早上上班,坐在辦公桌前做的第一件事就是給自己泡杯咖啡。 咖啡特有的香氣彌漫在空氣中...

· 29分钟前

大一工程化学复习

标准状态:系统中每种气体的分压为101.325kpa

· 32分钟前

给故人烧头七的意义

最近可能由于回答了一些关于生死的问题,于是很多人在后台都咨询了我相关烧头七以及能为故人做什么的问题。

· 35分钟前

藏族文化——紮西德勒

一、引言紮西德勒,吉祥如意之意,是藏族人民表示歡迎、問候、祝福等意的日常用語;紮西德勒,是藏語裡最吉祥、最能表達祝福...

· 40分钟前

Copyright 2015-2025 www.icpchaxun.com ©All Rights Reserved.