is it possible to create an variable that is used in multiple character Blueprint???
You can use child bp and they will inherit variable from the parent bp if that what you are planning to do.
so i can use 1 child actor for 6 different character classes to have the same variable but each would have different value ???
what am planning to do is have and id variable for all actors so that if an actor went in a hitbox (a box collision that is made to deal damage )it take it id and then i can use my custom deal damage node so it will deal damage to the character that have that id
so i wont need to take id from each character.
(IF THERE WAS AN EASIER WAY TO DO THIS PLEASE TELL ME IT)
Well in that case, you will just need one character bp with an Id variable of type Name.
You can exposed this variable, then either placed your character bp into the level map or via spawned. Set it ID to a specific one you want so that each instance of your character bp will have it own ID.
via viewport on the level map:
via spawn:

why not game instance ? create a game instance, set it in your project settings, add your global variables to it
after that when you want to access it from a anything (character, actor, umg, level blueprint and etc.)
Get game instance > cast to custom game instance > get your variable.
if i did this will i be able to give each actor thier custom variable Value for example health , stamina , id and etc.??
The best practice would be to create a main BP for character with all the variables required in it, then make child of it and set up your logic there. Keeps the code clean and manageable. You can make the ID instance editable and hence all the Characters then can have a unique ID.
I would give ID to each character and create a Map variable in GameInstance. Map’s key would be ID string, value is variable. If you have multiple variable, you can even create a struct variable for Map’s value.