It is always the default value in another blueprint.
I seem to have found the problem. I put the value to be changed in the construction script in the blueprint, when you use call in editor in another blueprint, the construction will not be executed, so it is always the default value.
Not sure if you know (are proficient) with concept of object oriented programming (blueprints are something like that but not always, and its confusing).
There are two forms/types of blueprint objects. One is abstract (code that you create), another is actual actor that uses code. It is very easy to mix them, it is also not always exactly visible in code.
So to transfer value of variable over, you need to have reference/pointer/memory address of actor you want send variable value to or read from. It is not enough to have code in both sides, code is abstract virtual and kind of does not exist until is assigned memory and actor with that code is created.
So many problems arise from when people are trying to communicate with abstract code that does not exist, it needs to be allocated and initialized first. However blueprints are really bad for first time learning object oriented programming.
you need to have pointer/memory address to another blueprint, then you can use cast_to node that tells unreal engine that there is some actor and it should be of some class
with this information (where it is and what it is) unreal can read variables from inside other actor or set them
how to get reference to another actor:
node “get all actors of class” gets all pointers to created actors and puts them in array
you can create variable in game_mode, actor_A sets that variable to “self” reference (that is pointer to that actor), and actor_B reads that variable from game_mode, so actor b knows where actor a is
or just search here or google for tutorials about “blueprint communication”, yes its kind of messed up, without knowledge about object oriented programming understanding blueprint ways is quite hard.
Thank you for your answer, I seem to have found the problem. I put the value to be changed in the construction script in the blueprint, when you use call in editor in another blueprint, the construction will not be executed, so it is always the default value.
Not sure if you know this about construction script (however maybe others find this useful, and this is also part of object oriented code in blueprints):
construction scripts are run when actor is created, when actor_a runs that script is is not guaranteed any other actor will be created yet, also order of actor creation may be different in editor and packed game, it may differ on different platforms. So always assume only actor that is created is one construction script is running from.
construction script runs only once in packaged game, in editor it will also run every time you change some exposed variable (tiny eye icon).