Trabalhando com Hashtables no Unity

Uma Hashtable é uma coleção de pares de chave-valor que permite que você armazene e recupere dados de forma eficiente. Cada chave em uma Hashtable deve ser única e é usada para acessar o valor correspondente. Em Unity, Hashtables são parte do namespace System.Collections e podem ser particularmente úteis para armazenar estruturas de dados não genéricas.

Criando uma Hashtable

Para usar um Hashtable em Unity, primeiro você precisa importar o namespace System.Collections e então inicializar um novo objeto Hashtable. Aqui está um exemplo:

using System.Collections;
using UnityEngine;

public class HashtableExample : MonoBehaviour
{
    void Start()
    {
        Hashtable myHashtable = new Hashtable();

        // Adding key-value pairs
        myHashtable.Add("PlayerName", "Alex");
        myHashtable.Add("Score", 1500);
        myHashtable.Add("Level", 5);

        // Accessing values
        Debug.Log("Player Name: " + myHashtable["PlayerName"]);
        Debug.Log("Score: " + myHashtable["Score"]);
        Debug.Log("Level: " + myHashtable["Level"]);
    }
}

Adicionando e acessando dados

Você pode adicionar dados a uma Hashtable usando o método Add. Para recuperar um valor, use a chave dentro de colchetes:

myHashtable.Add("Health", 100);
int health = (int)myHashtable["Health"];
Debug.Log("Health: " + health);

Se uma chave já existir, tentar usar Add lançará uma exceção. Em vez disso, use a chave diretamente para atualizar o valor:

myHashtable["Health"] = 80; // Updates the value associated with the key

Verificando chaves e valores

Para verificar se uma chave existe na Hashtable, use o método ContainsKey. Da mesma forma, use ContainsValue para verificar um valor:

if (myHashtable.ContainsKey("Score"))
{
    Debug.Log("Score exists: " + myHashtable["Score"]);
}

if (myHashtable.ContainsValue(1500))
{
    Debug.Log("Value 1500 is in the Hashtable.");
}

Removendo Dados

Você pode remover uma entrada da Hashtable usando o método Remove:

myHashtable.Remove("Level");
Debug.Log("Level removed.");

Iterando por uma Hashtable

Para iterar por todos os pares chave-valor em uma Hashtable, use um loop foreach:

foreach (DictionaryEntry entry in myHashtable)
{
    Debug.Log("Key: " + entry.Key + ", Value: " + entry.Value);
}

Limitações das Hashtables

Hashtables não são genéricos e não têm segurança de tipo. Se você precisa de melhor segurança de tipo e desempenho, considere usar o genérico Dictionary do namespace System.Collections.Generic. Hashtables são úteis principalmente ao trabalhar com coleções não genéricas ou ao interagir com bases de código mais antigas.

Conclusão

Hashtables em Unity fornecem uma maneira direta de gerenciar pares de chave-valor em seus projetos. Embora não sejam o tipo de coleção mais moderno, continuam sendo uma escolha válida para muitos cenários. Ao entender como criar, acessar e manipular Hashtables, você pode gerenciar dados de forma eficiente em seus aplicativos Unity.