Super Units: value inputs can be made available as Flow Variables automatically

Arron Washington 3 years ago updated by Lazlo Bonin (Lead Developer) 1 year ago 5

My graphs are getting larger!

To clear up a lot of visual clutter, I've started assigning input variables that won't be used immediately as flow variables.

(you can't see it, but I end up using these variables on the other end of the graph after I do some preflight checks and instantiate some other objects).

It'd be great if input variables could be automatically assigned to a flow variable of the same name or key.

Thinking about it concretely, though, there's no reason input variables can't automatically be assigned to a flow variable.

Bolt Version:
Unity Version:
Scripting Backend:
.NET Version (API Compatibility Level):

Or maybe they should automatically be graph variables instead...? Or optionally selected...?

If there is a performance reason why they aren't (haven't dug in enough to know), a check box in the inspector for the In/Outs to make a flow variable of the super unit port would be really handy.  Good idea!

Under Review

Interesting idea! It's not a performance issue, it's just a design concern.

The problem is that your graph can have multiple control inputs, and they might not all require the same values. 

Another issue would be backwards compatibility: existing graphs might rely on not fetching the value on port entry, so it might cause an error to fetch it earlier. It would have to be a new option, probably at the port level.

Going forward, the real solution to this problem would be "function graphs", which enforce a single entry point and copy passed parameters on the stack (flow variables) when entered.

I always just copy an existing Input node, I had no idea you could have different ports on the different input nodes!!

All this time and I'm still learning new tricks!


(Sorry for the bump/necro, I'm doing some roadmap grooming following the Unity acquisition!)

This is now supported in Bolt 2 Alpha via Flow Functions, which copy the inputs on their stack, like C# methods.