I'm trying to implement a small UI framework on top of Unity's UI tools to group some common behavior. I currently have implemented the concept of a "Window" containing navigable controls (which are currently implemented Unity's standard way: GameObjects with UI components for navigation and an EventTrigger to catch input events) and a "WindowManager" to handle transitions between windows and some other stuff.
The WindowManager has an "ActiveWindow" field that stores a reference to the control that's going to be first selected when it becomes active. That reference is passed to the EventSystem (and set as its Active GameObject) and then the UI components handle navigation and response to input between controls.
I'd like to handle the "Submit" event on each control (which I can do through the EventTrigger) but handle the "Cancel" action in the window (since it's related to the UI flow, which has nothing to do with a window's internal controls) so I put an EventTrigger that handles the "Cancel" event on my windows.
The problem is that the events sent by the EventSystem only seem to reach the active GameObject and not bubble all the way up to my window so I need a way to workaround this.
The things I could come up with are
1. Put some code in the window's Update() to handle the "Cancel" input. I don't like this one much because it goes outside unity's event system. I'd rather be consistent throughout the implementation of the framework and stick to events.
2. Implement my own EventSystem I'm not completely sure what this actually implies, but if I implement my own EventSystem I guess I could get this behavior I'm looking for. This might become handy in the future, when I'll need different UI controls to respond to a specific gamepad's input.
I'd appreciate any insights you share with me :)
Thanks in advance!
Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.
The best place to ask and answer questions about development with Unity.
To help users navigate the site we have posted a site navigation guide.
If you are a new user to Unity Answers, check out our FAQ for more information.
Make sure to check out our Knowledge Base for commonly asked Unity questions.
If you are a moderator, see our Moderator Guidelines page.
We are making improvements to UA, see the list of changes.
Answers and Comments
111 People are following this question.
How to solve event triggers blocking scrollview inputs in an inventory/menu?
Use Event Triggers or something similar on non-UI objects?
IPointerEnterHandler doesn't work when object switches parent
Unity UI - Select with Raycast (Screenspace - Camera)