@author: 白袍小道
隨緣查看
前言:
這里接着上文來說,編輯器的另外一條------編輯器模式。(若需要查看引擎層該部分過程,可以遷移到Unreal搬山)
正文:
1、實現圖
a)說明
BaiPaoXDEditorCheck_EditorMode |
模塊 主要方法: StartupModule: 可以在這里將模式注冊 +FEditorModeRegistry::Get().RegisterMode
ShutdownModule: 可以在這里將模式注銷 +FEditorModeRegistry::Get().UnregisterMode |
BaiPaoXDEditorCheck_EditorModeEdMode |
模塊模式 主要方法: virtual void Enter() override; //進入【例子中可以在這里構造工具且啟動 virtual void Exit() override; //退出
virtual void Tick(FEditorViewportClient* ViewportClient, float DeltaTime) override
virtual void Render(const FSceneView* View, FViewport* Viewport, FPrimitiveDrawInterface* PDI) override;
virtual void ActorSelectionChangeNotify() override; |
BaiPaoXDEditorCheck_EditorModeEdModeToolkit |
模式工具,基本上可以在這里做事情,當然也可以做多個 主要方法: /** FModeToolkit interface */ virtual void Init(const TSharedPtr<IToolkitHost>& InitToolkitHost) override;
/** IToolkit interface */ virtual FName GetToolkitFName() const override; virtual FText GetBaseToolkitName() const override; virtual class FEdMode* GetEditorMode() const override; virtual TSharedPtr<class SWidget> GetInlineContent() const override { return ToolkitWidget; }
屬性 TSharedPtr<SWidget> ToolkitWidget; |
主要實現部分:
2、需求和實現
可以對選中的Actor 整體位置做隨機偏移[范圍定義],並能撤銷
第一步:布局和結構
SVerticalBox::Slot() : 豎排
AutoHeight:自動匹配高度
HALign:橫向布局, VAlign:縱向。
Padding(50):分割
Locals::MakeButton: 一個返回SButton的自定義方法,
第二步:實現邏輯
注意一下:.IsEnabled_Static(&Locals::IsWidgetEnabled)【可以是否灰掉】