Really confused about simple blueprint communication

Hi there. I seem to be lacking a fundamental understanding of how to use blueprints efficiently when it comes to communicating between multiple game objects (something I never thought would be difficult.) For example, I have a scenario where the player walks up to a “shop” and is presented with a menu that lets them customize a skateboard. There are 3 blueprints, the UMG UI blueprint, the shop blueprint and the skateboard blueprint. The logic I’m trying to achieve is, (1) player walks into shop trigger which shows menu, (2) adjusting sliders changes wheel color.

Iv’e tried both event dispatchers and blueprint interfaces but I can never seem to get the references to objects I need in the right places. Its like everything is hidden to each-other. Iv’e heard that making blueprints as a parent class of player controller lets you use its functions everywhere but I don’t think I want to do that.** What I need is a clean explanation on a basic level of how objects should be set up in order to communicate with each other. thank you.**
ps (this project is a challenge for me to learn blueprinting correctly) *the wheel material is a dynamic material instance. *

You can setup one main UMG in your PlayerController, then load your other UMGs into it. Now you can create references in your Player Controller when dragging from the HUD, or referencing from your PlayerCharacter when getting PlayerController -> MyMainUMG -> WheelColorUMG

Example main HUD inside Player Controller. To hide a sub UMG create a function and set visibility to hidden.