Use material billboard. Add that billboard in target blueprint.
Use line trace to know if you targetted something.
Break line trace result, there should be reference to hit actor (its your target).
Use that, cast to Bp_target (or whaterver its called), if successful set billboard to visible.
But there is that problem of untargetting.
To solve it every target should have intiger index that you increase every time you create one target blueprint.
Then player controller (or pawn) should have event dispatchear “you are targetted” that gives integer index of which target is targetted.
And one more dispatcher that tells “no longer a target” with integer index again.
So when you target some BP_target, use line trace get its actor reference. Then call “you are targetted” with that intreger.
Targetted BP should then make targetting frame visible.
When you lose target call “no longer a target” again with integer index. And (un)targetted blueprint should hide billboard.
At begin play each bp_target blueprint should cast to player controller and bind both event dispatchers.
And last: “Why not umg?”
It is because material billboards have very nice scaling methods. If done rith you will never be bothered with targetting box scale again.
PS. I am doing it both ways. Targetting box is billboard, and name with ID of target is done from umg.