Easy Custom Notifications Documentation
============================================================ 1. OVERVIEW ============================================================
Easy Custom Notifications is a lightweight C++ runtime plugin for displaying polished, temporary messages without requiring a prebuilt Widget Blueprint. It provides a simple Blueprint node for common notifications and an advanced node for complete control over appearance, placement, animation, audio, and optional custom widgets.
Typical uses include objective updates, pickup messages, tutorial prompts, warnings, status notifications, achievements, and other local player UI alerts.
============================================================ 2. COMPATIBILITY AND TECHNICAL SCOPE ============================================================
Development platform: Windows Target build platform: Win64 Module type: Runtime Network replication: No; notifications are cosmetic and local to a player Split screen/local player support: Yes, through the optional Target Player input
The plugin does not support earlier Unreal Engine versions at this time.
============================================================ 3. ENABLING THE PLUGIN ============================================================
After installing the product through Fab:
1. Open your Unreal Engine 5.8 project. 2. Open Edit Plugins. 3. Search for Easy Custom Notifications or Easy Display Custom Notification Widget. 4. Enable the plugin. 5. Restart the editor if Unreal Engine requests it.
============================================================ 4. QUICK START SIMPLE BLUEPRINT NODE ============================================================
Inside an Actor, Player Controller, Widget, or another Blueprint with a valid world context:
1. Right click in the graph. 2. Search for Show Custom Message. 3. Enter the Display Text. 4. Select the Text Color, Animation Direction, Screen Position, and Display Duration. 5. Execute the node.
The returned Message Handle can be saved if the notification may need to be dismissed before it naturally expires.
Simple node inputs:
Display Text: Message shown to the player. Text Color: Color and opacity of the text. Animation Direction: None, Up, Down, Left, or Right. Screen Position: Any of the nine supported screen anchors. Display Duration: Fully visible time, excluding entrance and exit animation time. Target Player: Optional. Leave empty to use the first local player, or supply a local Player Controller for split screen and explicit routing.
============================================================ 5. ADVANCED BLUEPRINT NODE ============================================================
Use Show Custom Message (Advanced) with a Make Easy Custom Notification Style node when additional control is required.
Appearance settings:
Text Color Background Color, including opacity Show Background Font Size Use Custom Font Custom Font asset, typeface, and size
Layout settings:
Screen Position Minimum Width Maximum Width and text wrapping Content Padding Message Spacing
Timing and animation settings:
Display Duration Animation Duration Animation Direction Travel Distance
Audio settings:
Notification Sound Volume Multiplier Pitch Multiplier Sound Start Time Stop Sound With Notification Sound Fade Out Duration
Custom widget settings:
Custom Widget Class Custom Widget Controls Animation
All style values are sanitized to safe ranges at runtime.
============================================================ 6. SCREEN POSITIONS AND STACKING ============================================================
The plugin supports nine independent screen regions:
Top Left Top Center Top Right Center Left Center Center Right Bottom Left Bottom Center Bottom Right
Messages are stacked within their selected region. Each local player can have up to 32 simultaneous notifications. If this limit is exceeded, the oldest active notification is removed safely.
============================================================ 7. ANIMATION BEHAVIOR ============================================================
Directional animation controls the direction in which the notification travels. For example, Up enters from below its resting position and exits upward. Down, Left, and Right follow the equivalent directional behavior. None keeps the card stationary while still applying the standard fade.
Animation Duration applies separately to the entrance and exit. Display Duration is the time spent fully visible between them.
============================================================ 8. CUSTOM FONTS ============================================================
Enable Use Custom Font and assign a font through Custom Font. The font can include a project Font asset, typeface, and size. Ensure any selected font asset is included normally in the buyer project's packaged content.
When Use Custom Font is disabled, the plugin uses Unreal Engine's packaged safe default font with the selected Font Size.
============================================================ 9. SOUND EFFECTS AND MUSIC ============================================================
Notification Sound accepts Unreal Engine sound types based on USoundBase, including Sound Waves, Sound Cues, MetaSound Sources, short effects, and music.
Enable Stop Sound With Notification when a playing sound should stop or fade when the notification expires, is dismissed, is cleared, or its local player subsystem shuts down. Disable it when the sound should continue independently after the notification disappears.
Audio is played in 2D for the selected local player and is not spatialized in the world.
============================================================ 10. CREATING A CUSTOM WIDGET ============================================================
The built in code only notification is used when Custom Widget Class is empty. To create a completely custom visual:
1. Create a new Widget Blueprint. 2. Select Easy Custom Notification Widget as its parent class. 3. Design the desired layout. 4. Assign the new Widget Blueprint to Custom Widget Class in the advanced style.
Optional automatic bindings:
Name a Text Block MessageTextBlock to receive the message text, color, font, and wrapping automatically. Name a Border MessageBackground to receive the background color and content padding automatically.
These names are optional. A completely different layout can read these inherited Blueprint variables:
Notification Handle Notification Text Notification Style
Available widget events and function:
On Notification Initialized: Called after the complete data is available and the widget has been inserted into its stack. On Notification Dismissed: Called before the widget is released. bExpired is true for natural expiration and false for manual dismissal or clearing. Dismiss This Notification: Removes the current notification through its owning local player subsystem.
Enable Custom Widget Controls Animation when the Widget Blueprint plays its own UMG animations. This disables the plugin's transform and fade animation, but the plugin still owns stacking and lifetime. The custom widget should use the timing values in Notification Style when synchronizing its animation.
============================================================ 11. MESSAGE MANAGEMENT NODES ============================================================
Dismiss Custom Message: Removes the notification matching a valid Message Handle and returns whether it was found. Clear Custom Messages: Removes all notifications belonging to the selected local player. Get Active Custom Message Count: Returns the number of currently managed notifications for the selected local player.
Handles are unique for each successfully created notification. An invalid handle is returned when the text is empty or a valid local player, Player Controller, Slate application, or game viewport is unavailable.
============================================================ 12. MULTIPLAYER AND SPLIT SCREEN ============================================================
The plugin is intentionally client side and does not replicate notifications automatically.
For a network game:
1. Decide on the server which player should receive the message. 2. Call a Client RPC on that player's owning Player Controller. 3. Call Show Custom Message inside that Client RPC.
Do not call the display node only on a dedicated server because a dedicated server has no local viewport. For split screen, pass the intended local Player Controller through Target Player. Leaving Target Player empty selects the first local player.
============================================================ 13. C++ EXAMPLE ============================================================
include "EasyDisplayCustomNotificationLibrary.h"
FEasyCustomNotificationStyle Style; Style.ScreenPosition = EEasyCustomNotificationScreenPosition::TopRight; Style.AnimationDirection = EEasyCustomNotificationAnimationDirection::Left; Style.DisplayDuration = 3.0f; Style.TextColor = FLinearColor::White;
const FGuid MessageHandle = UEasyDisplayCustomNotificationLibrary::ShowCustomMessageAdvanced( this, FText::FromString(TEXT("Objective Complete")), Style, nullptr);
Pass a local Player Controller instead of nullptr when explicit local player routing is required.
============================================================ 14. TROUBLESHOOTING ============================================================
The node does nothing: Confirm the plugin is enabled and the editor was restarted. Confirm Display Text is not empty or whitespace. Call the node during play when a local Player Controller and game viewport exist. In multiplayer, confirm the call is executing on the owning client.
The custom widget is not available in the class picker: Confirm its parent is Easy Custom Notification Widget. Compile and save the Widget Blueprint. Confirm the class is not abstract or deprecated.
The custom font or sound is missing from a packaged game: Confirm the selected asset belongs to the project or another packaged dependency. Confirm the asset is referenced by the Blueprint/style data used by the game.
The custom widget animation appears doubled: Enable Custom Widget Controls Animation when the Widget Blueprint owns its UMG animation.
The wrong split screen player receives the message: Supply the intended local Player Controller through Target Player instead of leaving it empty.
============================================================ 15. SUPPORT ============================================================
Support: https://discord.gg/9Zc4wbwqG9 Seller: https://www.fab.com/sellers/CelestiaDominance