Troubleshooting
Solutions to common problems and issues.
Widget Issues
Widget doesn’t appear
Symptoms: Looking at object, but no widget visible
Solutions:
-
Check Widget Component Settings:
☑️ Space = World (NOT Screen!) ☑️ Visible = False (starts hidden, auto-shown) ☑️ Widget Class is assigned -
Check Widget Blueprint:
☑️ Parent Class = InteractionWidget ☑️ Has valid design (not empty) ☑️ Text elements marked "Is Variable" -
Check InteractionData:
☑️ InteractionName is set (not empty) ☑️ Component is enabled -
Force Test:
// In object Event Graph Event BeginPlay └─ Widget Component → Set Visibility (True)If widget shows now → System works, check focus logic
Widget shows but doesn’t update
Symptoms: Widget visible but shows default text
Cause: Events not implemented or not firing
Solutions:
-
Check Event Implementation:
// In Widget Graph Event OnInteractionAvailable ← Must exist! └─ Break FInteractionData └─ Set Text (Text_ActionName) -
Verify Widget receives data:
Event OnInteractionAvailable └─ Print String (InteractionData.InteractionName)If prints → Events work, check text binding
-
Check Variable Names:
- Ensure Text_ActionName (or your name) is marked “Is Variable”
- Variable name in Graph must match name in Designer
Widget appears at wrong location
Solution: Position Widget Component in object
1. Select Widget Component in Components panel
2. Transform → Location: Adjust X/Y/Z
Example: Z = 100 (100cm above object)
Widget too big/small
Solution: Adjust Draw Size
Widget Component:
└─ Draw Size: 400 x 150 (default)
Smaller: 200 x 75
Larger: 600 x 200
Interaction Issues
OnInteract doesn’t fire
Symptoms: Looking at object, pressing key, nothing happens
Solutions:
-
Check Collision:
Object's Mesh: ├─ Collision Enabled: Query Only or Collision Enabled └─ Object Type: WorldStatic or WorldDynamic Good presets: BlockAll, BlockAllDynamic -
Check Component State:
InteractableComponent: ├─ bIsEnabled = True ✓ ├─ bIsOnCooldown = False ✓ └─ InteractionData is filled -
Check Detection:
InteractionComponent (Player): ├─ Show Debug = True └─ Look at object → See green line? ├─ Yes → Detection works, check interaction └─ No → Detection issue (see below) -
Test with Print:
Event OnInteract └─ Print String ("INTERACTION TRIGGERED!")
Can detect object but can’t interact
Symptoms: Debug line green, widget shows, but pressing key does nothing
Causes:
- Input not bound
- Wrong input state (need Press + Release)
- Cooldown active
Solutions:
-
Verify Input Binding:
Input Action "E" (Pressed) └─ InteractionComponent → Start Interaction ✓ Input Action "E" (Released) ← Need this for Hold! └─ InteractionComponent → Stop Interaction ✓ -
Check in Player Character:
- Input binding is in Player/Character Blueprint
- InteractionComponent is on Player/Character
- Not on the Interactable Object!
-
Reset Cooldown:
InteractableComponent → Reset Cooldown
Object detected from too far away
Solution: Reduce Interaction Distance
InteractionComponent:
└─ Interaction Distance = 500 → 300
Can’t interact when very close
Cause: Minimum distance filtering
Solution:
InteractionComponent:
├─ bUseDistanceFiltering = False
or
└─ MinInteractionDistance = 0
Detection Issues
Nothing gets detected
Symptoms: Debug line always red, never green
Solutions:
-
Check InteractionComponent:
☑️ On Player/Character (not on objects!) ☑️ Detection Distance > 0 (e.g., 500) ☑️ Show Debug = True (for testing) -
Check Object:
☑️ Has InteractableComponent ☑️ Has Collision enabled ☑️ Not too far away -
Try Different Method:
Change Detection Method to Overlap Increase Interaction Distance to 1000 Disable all filtering temporarily -
Verify Trace Channel:
- Default uses
ECC_Visibility - Ensure objects block this channel
- Default uses
Wrong object selected
Symptoms: Multiple objects, but wrong one is focused
Solution: Use Priority System
Important Object:
└─ Priority = 10
Less Important:
└─ Priority = 0
System auto-selects highest priority
Objects behind walls detected
Cause: Trace goes through walls
Solutions:
-
Ensure walls have collision:
Wall: └─ Collision: BlockAll -
Use Line Trace method:
- More accurate than Overlap
- Blocked by obstacles
Multiplayer Issues
Interaction works in singleplayer but not multiplayer
Solutions:
-
Verify Replication:
InteractionComponent: └─ Replication: ✓ Replicates (default) InteractableComponent: └─ Replication: ✓ Replicates (default) -
Check Authority:
Event OnInteract ├─ Branch: Has Authority? │ ├─ True → "SERVER" │ └─ False → "CLIENT"Should print “SERVER” (interactions run on server)
-
Test Distance on Server:
- Server validates distance
- Client too far = rejected
- Use Debug to verify
Client sees other client’s interactions wrong
Cause: State not replicated
Solution: Use Replicated variables
UPROPERTY(Replicated)
bool bIsActivated;
Lag causes missed interactions
This is expected! Server authority means validation delay.
Mitigation:
- Provide immediate visual feedback on client
- Show “processing” state during server round-trip
- Design interactions to be forgiving (not frame-perfect)
Performance Issues
Low FPS when many interactables
Solutions:
-
Increase Detection Interval:
InteractionComponent: └─ Detection Interval = 0.1 → 0.2 or 0.3 -
Use Distance Culling:
// On Interactable objects Event Tick (every 2 seconds) ├─ Distance to Player > 2000? │ ├─ True → SetEnabled (False) │ └─ False → SetEnabled (True) -
Disable Debug:
Show Debug = False ✓ -
Optimize Detection Method:
- Line Trace: Best performance
- Sphere Trace: Good
- Overlap: Fair (expensive with many objects)
- Cone: Good
Widget Visualization Issues
Widget appears behind objects
Solution: Adjust render order
Widget Component:
└─ Translucency Sort Priority = 100
Higher values render later (on top)
Widget pixelated/blurry
Solution: Increase Draw Size
Widget Component:
└─ Draw Size = 800 x 300 (double it)
Or increase widget texture quality in widget settings
Widget doesn’t face camera
Solution: Enable billboard effect
Widget Component:
└─ Transform → Absolute Rotation = ✓ True
Or implement custom rotation:
Event Tick
├─ Get Player Camera Location
├─ Find Look at Rotation
└─ Set World Rotation (Widget Component)
Build/Compilation Issues
“Plugin requires rebuild”
Solution:
- Close Unreal Editor
- Delete these folders:
ProjectRoot/Binaries/ProjectRoot/Intermediate/ProjectRoot/Plugins/OwnInteract/Binaries/ProjectRoot/Plugins/OwnInteract/Intermediate/
- Right-click
.uproject→ Generate VS project files - Reopen project (will rebuild)
Build errors with InteractionWidget
Cause: Widget doesn’t inherit from correct class
Solution:
- Open Widget Blueprint
- File → Class Settings
- Parent Class →
InteractionWidget - If not in list → Plugin not loaded correctly
Still Having Issues?
Debug Checklist
Run through this checklist systematically:
Player Setup:
- [ ] InteractionComponent on Character
- [ ] Input bound to Start/Stop Interaction
- [ ] Detection Distance > 100
- [ ] Show Debug enabled
Object Setup:
- [ ] InteractableComponent present
- [ ] WidgetComponent present
- [ ] Collision enabled (BlockAll)
- [ ] Widget assigned to WidgetComponent
- [ ] InteractionData filled (ActionName, etc.)
Widget Setup:
- [ ] Widget inherits from InteractionWidget
- [ ] Has UI elements (Text, etc.)
- [ ] Elements marked “Is Variable”
- [ ] Events implemented (OnInteractionAvailable)
- [ ] Widget Component Space = World
- [ ] Widget Component Visible = False
Test:
- [ ] Green debug line when looking at object?
- [ ] Widget appears when looking?
- [ ] Print String in OnInteract fires?
If all checked and still not working:
- Try with completely fresh test Actor
- Ensure no other systems interfering
- Check for errors in Output Log
Get Help
If you’ve tried everything:
- Check FAQ for common questions
- Verify against Getting Started guide
- Contact support via Marketplace