DebugMenu documentation ~~~~~~~~~~~~~~~~~~~~~~~ FWORKS fairooze@gmail.com ------------------------------------------------------------------------------------------------ How to integrate the plugin with your project ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Set up the debug menu classes in the Project Settings - Unreal Editor -> Edit -> Project Settings -> Debug Menu For "Debug Menu Manager Ref", choose BP_DebugMenuManager For "Debug Menu Input Handler Ref", you have three options 1) Choose BP_DebugMenu_EnhancedInput if you are using the new enhanced input system (UE5.1) 2) Choose BP_DebugMenu_LegacyInput if you are using the old input system 3) Otherwise, if you prefer to manually hook up input: Get a reference to the manager object with ADebugMenuManager::GetDebugMenuManager() Call ADebugMenuManager::ToggleDebugMenu to toggle the menu on and off Call the following functions when the input is triggered while the menu is active: ADebugMenuManager::InputDown() ADebugMenuManager::InputUp() ADebugMenuManager::InputConfirm() ADebugMenuManager::InputCancel() ADebugMenuManager::InputLeft() ADebugMenuManager::InputRight() ADebugMenuManager::InputToggleWatch() That is all, the menu is ready to be used during gameplay. If you have used one of the sample input blueprints: - use the Slash key (/) to toggle the menu on/off. Or press both thumbsticks on the gamepad for a keyboard-less experience! - use the Up/Down arrow keys to scroll through the entries - use the Enter key to enter a category or toggle an entry. For numeric entries, pressing Enter will also let you type in a value - use the Left/Right arrow keys to tweak an entry (if the entry supports it) - use the Backspace key to leave the current category and go back to the previous one. ------------------------------------------------------------------------------------------------ How to customize the menu display options ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ BP_DebugMenuManager has exposed options for various colors, fonts, etc to customize the look and feel of the menu ------------------------------------------------------------------------------------------------ How to add new categories to the menu ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Create a new blueprint of type ADebugMenuLibrary (or duplicate one of the sample libraries) - Set the category name in the "CategoryHierarchy" property. You can nest categories by adding more entries to the array. - Setup the entries for the category in the "MenuEntries" property (refer to below section) - Add the library in the menu manager blueprint under "Default Libraries" so that the category is always available. Otherwise simply spawn the library blueprint at any time during gameplay and it will automatically register itself to the manager. ------------------------------------------------------------------------------------------------ How to add new entries to the category ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In the library blueprint, add a new entry with the desired type. Refer to the sample libraries/entries to see how they are set up. Blueprint Function - Calls a specified blueprint function when triggered Bool Blueprint - Modifies a boolean value whose getter/setter are defined in the library blueprint Bool CVar - Manipulates a console variable of Boolean type Bool EngineStat - Toggles an engine stat, eg "stat fps" Bool ShowFlag - Toggles an engine showflag, eg "showflag.staticmeshes" Float Blueprint - Modifies a float value whose getter/setter are defined in the library blueprint Float CVar - Manipulates a console variable of Float type Int32 Blueprint - Modifies a integer value whose getter/setter are defined in the library blueprint Int32 CVar - Manipulates a console variable of Int32 type String CVar - Manipulates a console variable of String type Vector Blueprint - Manipulates a vector value whose getter/setter are defined in the library blueprint ------------------------------------------------------------------------------------------------- Version History ~~~~~~~~~~~~~~~ 1.10 - Delay plugin loading phase to PostDefault to fit most use cases - Add support for triggering ufunctions in object search - Fix crash when calling blueprint functions of the wrong signature 1.09 - Fix crash on toggling watch on certain variables - Add support for watching TSet variables 1.08 - Fix crash when watching variables nested deeply in structs/arrays - Add support for watching TMap variables 1.07 - Add UE 5.3 support - Support for toggling watches on uobject variables via ObjectSearch menu with spacebar 1.06 - Tap PageUp/PageDown on keyboard to jump 10 entries at a time - Improve formatting of display strings in object editor - Add new library type ADebugMenuLibraryObjectList to list all objects of a class 1.05 - Add object editor support for editing variables nested in structs - Try to maintain previous selection when going one level backwards in the menu 1.04 - User can hold the up/down/left/right buttons to continously scroll the menu - Display object references in object editor library - Add support for enum types in object editor library 1.03 - Add new library type ADebugMenuLibraryObjectEditor which shows all bool/int32/float/string/vector properties - Add new library type ADebugMenuLibraryObjectSearch which lets you search for an object and modify its properties - Automatically spawn MenuManager and InputHandler via a WorldSubsystem instead of having to add it to the map yourself 1.02 - Add UE 5.0 support 1.01 - Fix possible compilation errors in non-unity builds - Remove disableoptimization pragma ------------------------------------------------------------------------------------------------- Todo ~~~~~~~~~~~~~~~ - Add support for String Blueprint entry type