# IKeyGenerator

> Generates the unique ids assigned to table keys.

## Definition

* **Type:** Interface
* **Namespace:** [Unity.Localization](/engine/6000.7/script-reference/unity/localization.md)
* **Assembly:** UnityEngine.LocalizationRuntimeModule

```csharp
public interface IKeyGenerator
```

## Remarks

A collection's [SharedTableData](/engine/6000.7/script-reference/unity/localization/sharedtabledata.md) asks its generator for a new id whenever a key is added, and the id stays with that key for its lifetime. The default implementation is [DistributedUIDGenerator](/engine/6000.7/script-reference/unity/localization/distributeduidgenerator.md), which produces non-sequential ids so several users can add keys without collisions. Implement this interface to supply a different scheme, then assign it through [SharedTableData.KeyGenerator](/engine/6000.7/script-reference/unity/localization/sharedtabledata/keygenerator.md).

Additional Resources: [DistributedUIDGenerator](/engine/6000.7/script-reference/unity/localization/distributeduidgenerator.md), [SharedTableData](/engine/6000.7/script-reference/unity/localization/sharedtabledata.md)

A simple generator that hands out increasing ids.

## Examples

```csharp
using Unity.Localization;
using UnityEngine;

namespace Unity.Localization.Samples
{
    public class IKeyGeneratorExample : IKeyGenerator
    {
        long m_Next = 1;

        public long GetNextKey() => m_Next++;

        public static void Use()
        {
            var sharedData = ScriptableObject.CreateInstance<SharedTableData>();
            sharedData.KeyGenerator = new IKeyGeneratorExample();

            SharedTableData.SharedTableEntry entry = sharedData.AddKey("GREETING");

            Debug.Log(entry.Id);   // 1
        }
    }
}
```

## Methods

| Method                                                                                       | Description                             |
| -------------------------------------------------------------------------------------------- | --------------------------------------- |
| [GetNextKey](/engine/6000.7/script-reference/unity/localization/ikeygenerator/getnextkey.md) | Returns the next id to assign to a key. |
