RafaelMatos
In Construct 3, UID are the unique identifiers of your instances. It means that this number is guaranteed to be associated to only one instance in your game. Even Objects from different Families / Object Classes are guaranteed to never share the same UID. Even just created instances can't have the same UID as old instances that were destroyed long before. (instances of Text1, SpriteObject1, SpriteObject2 and FamilyX can't have the same UID.)
It has always been a really handy feature of Construct for multiple reasons, i probably used them in 90% of my event blocks even before I created UID To Anything that makes them even more powerful.
The main usecase is that they can act as "Instance Reference".
You can "store an instance reference" in a number variable "MyUID", and then easily pick that specific instance thanks to the action "Pick by UID".
To store the UID you want to retrieve later, you need to pick the right instance only once (and set it in a Global/Local/Instance variable for example). "Set MyUID to MyInstance.UID"
UID TO ANYTHING allow you to do much much more thanks to the UID of your instances, as explained on the page. With this tool, you can do a bunch of actions and conditions but also retrieve expressions or instance variables of your instances only thanks to their UID. (even if you didn't pick those instance in your eventblock, as long as you stored the UID). It also solves a bunch of annoying limitations of the Family features and the Eventsheet in general.
The UID feature (and, by extension, UID To Anything) can be useful in almost any system you could imagine in Construct.
For example, let's say you have the "People" Family in your TopDown game, one of this Family feature is that People can target other People (their target). A "People" instance (Instance A) can store a reference of their targeted "People" instance (Instance B) thanks to a number variable called TargetUID.
If you want to know the distance between Instance A and its target Instance B, you could just use the expressions UIDTo.DistanceTo(People.UID, People.TargetUID). Here People.UID and People.TargetUID are 2 expressions of the Instance A, but they return respectivelly the unique identifier of Instance A and Instance B. Which means you were able to get the data of Instance B without even needing to pick it ! UIDTo.DistanceTo is one of the many expression of the plugin, it allows you to get the distance between 2 objects only thanks to their UID.
An other interesting thing is with UIDToAnything is that your Target could be an instance from any ObjectType/Family and even any Object Category.
You could set the TargetUID to an instance of a Props Object (such as a barrel) by setting People.TargetUID to Barrel.UID and it would still work, even if it isn't part of the People Family !
You could even set People.TargetUID to a Text instance (Text.UID) and your code that get the distance between your people and its target would still work ! Imagine how useful it is for a UI System to be able to share logic between Sprite, 9Patch, TiledBackground, Text and SpriteFonts for example.
The goal of this plugin isn't to replace everything you were doing in C3 before, but it's an powerful additional toolbox to enhance the capabilities of eventsheet, that can be handy in many common situations and that allow you to work around annoying limitations of the engine.