Hi,
yeah, you will have duplicated local variables throughout the fsm in the chain of communication, from manager to the last tiny bit of gameobject or button.
This is called "composition" when you do this in pur scripting. basically you are going to cascade the variable from one fsm to another, either by using Set Fsm XXX or sending an event with the data containing that variable value.
If you want to update everyframe values, I would do the following:
Assuming, the Manager has a "Manager Value" float local variable. and many fsm wants to get this value on update cause it's changing all the time:
1: The Manager MUST have an Fsm called "Manager Data" ( that's how I usually do this, but you can name it what ever make sense for you.
2: each fsm "slaved" to the manager will be sent by the manager a "SLAVE / INIT",
3: all fsm that wants to use a manager variable will listen to that global event
4: when an fsm receive that event, is stores the "sender" of this event in a GameObject local Variable "Manager"
5: Each fo these slaved Fsm have their own "Manager Value" local fsm variable, you can name them "&Manager Value" or something just to visually indicate it's a slaved value
6: use whenever you want in these slaved fsm, "Get Fsm XXX", targeting the "Manager" GameObject received from the "SLAVE / INIT", and save the "Manager Value" into "&Manager Value"
That's one way to go about this.
Does that make sense? Check my IOS VIew Controller sample on the ecosystem, it shows various similar setup.
Bye,
Jean