I noticed on the release candidate for 2018.3.0f1 when I create a prefab variant from a prefab with a blackbloard then the overrides are not bolded like they are for normal components. Not sure if this is something that can be worked around for blackbloards but thought I would point it out as it can get hard with large blackbloards to see the changes.
Attached image shows no bold on the name and mass changes on blackboard. Other image is test script with just two properties that shows bold.
Using latest node and flowcanvas from asset store.
That is indeed the fact with blackboard variables. The reason why this is happening, is because blackboards are serialized as a whole (object) in json containing the variables, rather than separately/normal via the Unity standard serialization system. That is because blackboard variables support more type than what Unity typically does.
To get around this, I will have to change the serialization of variables completely, which though it is something that if I do, will break backwards compatibility. With that said though, I do plan to address this in one way or another in the future.
Ah ya I see now. So as far as I can tell blackboards can’t be used with variants at all unless nothing in the blackboard is different because the variants don’t detect when variables are changed, removed or added etc. So if I change the root prefab blackboard then I have to go and tell the variants to revert one by one.
My thinking right now is I will create a component who’s only job is to populate the blackboard with initial values then the blackboards will be the same for all variants and the variants blackboards will update when I modify the root prefab. Then my inital values will be different per variant in the component.
I have tried in the past to avoid using blackboards and just use a data component but then I ran into all these task etc needing blackboard vars in behavior trees and conditions etc.
Yes, that is correct and exactly what is happening, which understandably so, can be inconvenient in regards to the new Unity’s Prefab System and for which I do look at possible solutions.
Populating blackboards via code can certainly work. As long as the blackboard variables populated are of the same type and have the same name that the graph nodes or tasks parameters are looking for, it should work without any problem.
Once again though, I do look at possible solutions around that using the new Unity prefab API, or even by changing the serialization of blackboard variables.