Unique ID¶
To generate unique identifiers, it is usually used the System.Guid
class, because it provides a fast and reliable mechanism to generate long enough IDs that the collision chance is almost zero.
However, this class is not serializable. That's why Game Creator comes with the UniqueID
class, which serves two purposes:
- Serializable: This means that any changes made to this ID will be kept between editor sessions.
- Custom UI: When showing this ID in a Unity Window, it automatically displays a nice and handy box with buttons that allow to easily modify this ID or even regenerate it, in case that's necessary.
Initialization¶
To initialize a class instance of UniqueID
is as easy as calling the constructor class. For example, let's say we want to add a unique ID to a MonoBehaviour
class:
public class MyComponent : MonoBehaviour
{
public UniqueID myID = new UniqueID();
}
This will automagically assign a unique ID to the myID
field. If we drag and drop this component onto a scene game object, we'll see this field with its associated ID.
Accessing ID¶
Accessing the ID value can be performed getting the IdString
struct, which contains a string based ID and its hash value. This last one is recommended when comparing to ids:
To get the hash value:
int hash = this.myID.Get.Hash;
To get the string
value:
string id = this.myID.Get.String;
Best Practices
Accessing the string
value of the UniqueID should only be done if you plan on serializing this value somewhere. For comparing two IDs, it is best if you simply compare their hash
value, as the probablity that two strings have the same hash value its very, very very low. On the other hand, comparing two int
values is extremely fast and performant.