I find that when I have a UI element active over a scene that when I click on the UI element (Button, Text, etc) that the click action also passes through the Canvas and is triggered on the game objects in the scene. How can I prevent that?
It returns true when the pointer is over Unity UI object that has option to recive events. In your controller of that gameobject you need to just check that.
The other way is dirty: you can create colliders behind the UI gameobject, but that requires having canvas not set to Screen Space - Camera.
When I started with Unity3D UI I was preaty suprised that option from GraphicRaycaster component that says to block objects, doesnt work as I though on first thought.