ue-editor-tools

Use when extending the Unreal Editor with editor tool, editor utility widget, Blutility, detail customization, property customization, editor mode, asset editor, editor subsystem, editor extension, UToolMenus, or scripted asset operations. For Slate fundamentals, see ue-ui-umg-slate. For module buil

By quodsoler · 937 installs

npx skills add quodsoler/unreal-engine-skills --skill ue-editor-tools

Source repository · Upstream listing

UE Editor Tools You are an expert in extending the Unreal Editor with custom tools and workflows. Context Read .agents/ue project context.md for editor module structure, engine version, team workflows, and project specific conventions before providing guidance. Before You Start Ask which area the user needs if not clear: Editor Utility Widget — UMG panel run from editor right click Blutility — UAssetActionUtility or UActorActionUtility scripted actions Detail Customization — Custom property panel (IDetailCustomization / IPropertyTypeCustomization) Custom Editor Mode — Viewport mode with specialized interaction (FEdMode) Asset Type Actions — Content Browser integration for a custom asset type Editor Subsystem — Editor lifetime singleton (UEditorSubsystem) Menu / Toolbar Extension — UToolMenus additions to main menu, toolbars, context menus Editor Module Setup All editor extending code must live in a module with "Type": "Editor" . Never put UnrealEd / PropertyEditor includes in a Runtime module without if WITH EDITOR guards. Module skeleton — every registration in StartupModule must be mirrored in ShutdownModule : Full boilerplate with asset type actions, editor modes, and factory: references/editor module setup.md Editor Utility Widgets UEditorUtilityWidget (from EditorUtilityWidget.h ) extends UUserWidget for editor only UMG panels. Create as a Blueprint subclass (right click Content Browser Editor Utilities Editor Utility Widget). Run : right click the widget asset Run Editor Utility Widget. Or subclass in C++: Key UEditorUtilityLibrary functions (from EditorUtilityLibrary.h ): Function Purpose GetSelectedAssets() Currently selected Content Browser assets GetSelectedAssetsOfClass(UClass ) Filter selection by class UEditorAssetLibrary::DeleteAsset(Path) Delete asset; RenameAsset for move/rename GetSelectionSet() Selected level actors SyncBrowserToFolders(TArray<FString ) Sync content browser view Content browser filters : Use FARFilter with IAssetRegistry::GetAssets for programmatic asset queries by class, path, or tags. Open a widget programmatically: Blutility: Scripted Actions UAssetActionUtility — Asset Right Click Actions Any UFUNCTION(CallInEditor) on a UAssetActionUtility subclass appears in the Content Browser context menu. Set SupportedClasses in Class Defaults to filter by asset type. UActorActionUtility — Actor Right Click Actions Same pattern for level actors. Both UAssetActionUtility and UActorActionUtility inherit from UEditorUtilityObject , the base class for all Blutility actions. Detail Customizations Class Customization — IDetailCustomization Struct Customization — IPropertyTypeCustomization Full implementations, Slate row patterns, IPropertyHandle read/write, NameContent/ValueContent: references/detail customization patterns.md Custom Editor Modes FEdMode (from EdMode.h ) provides specialized viewport interaction. Register globally; only one active per viewport at a time. Register/unregister in module lifecycle: Asset Type Actions FAssetTypeActions Base (from AssetTypeActions Base.h ) controls Content Browser appearance and context menu for custom asset types. Register in StartupModule , keep reference, unregister in ShutdownModule . FAssetEditorToolkit — Tab Based Asset Editor Window Query open editors programmatically via IAssetEditorInstance : Asset Factories UFactory subclasses allow the Content Browser's "Add" menu to create new custom assets: Custom Thumbnails Editor Subsystems UEditorSubsystem (from EditorSubsystem.h ) — editor lifetime singletons, auto discovered (no registration needed). Access via GEditor GetEditorSubsystem<T () . Built in subsystems: Subsystem Purpose UEditorActorSubsystem Select, spawn, delete level actors UEditorAssetSubsystem Load, save, duplicate assets ULevelEditorSubsystem Open, save, manage levels UEditorUtilitySubsystem Spawn editor utility widget tabs Menu and Toolbar Extensions (UToolMenus) UToolMenus (UE5+) replaces FExtender . Register inside the startup callback so Slate is ready: Always unregister: UToolMenus::UnRegisterStartupCallback(this) + TryGet() UnregisterOwner(this) . Command Registration — TCommands Pattern Data Validation Common Mistakes Mistake Fix Editor headers in Runtime modules Move to Editor module; use if WITH EDITOR for runtime side editor hooks No UnregisterCustomClassLayout in ShutdownModule Always pair register/unregister; crashes Live Coding reload Raw pointer capture in Slate lambdas Capture as TWeakPtr ; pin before use LoadingPhase: Default for editor extension module Use PostEngineInit for modules registering menus or customizations UEditorUtilityWidget referenced from Runtime Editor only; will not exist in packaged builds ForceRefreshDetails() on every value change Use only when layout structure changes; use handles/attributes for values RegisterMode without UnregisterMode Crashes on plugin reload Related Skills ue ui umg slate — Slate widget fundamentals (SNew, TAttribute, FReply, SBox, SHorizontalBox) ue module build system — Editor module .Build.cs , LoadingPhase, WITH EDITOR guards ue data assets tables — Custom UDataAsset types that need asset editors and type actions ue cpp foundations — UPROPERTY, UFUNCTION, UObject reflection system