Make id 0 invalid or make -1 as ID variable default, on construct script check ID is 0 (or -1) if it is set new ID, if it not ID will simply stay the same
will be if you copy actor, ID variable may copy you will need to reset some how. Editor code of actor is hard to modify from blueprint sadly, C++ would be better place for that.
Generally engine uses pointers (pointer is a address in memory which points to the object data in there) as a unique identifier, as UObject as never hold directly in variable, so blue pin is identifier and it reason why you don’t see unique numeral IDs. If you see ID like in “Get Player Controller”, it uses array index of found PlayerControllers as a ID. Maybe playing around with array (since you can check if it contains specific element) is good direction here