Работа с хеш-таблицами в Unity
Hashtable — это коллекция пар «ключ-значение», которая позволяет эффективно хранить и извлекать данные. Каждый ключ в Hashtable должен быть уникальным и используется для доступа к соответствующему значению. В Unity Hashtables являются частью пространства имен System.Collections
и могут быть особенно полезны для хранения неуниверсальных структур данных.
Создание хеш-таблицы
Чтобы использовать Hashtable в Unity, сначала нужно импортировать пространство имен System.Collections
, а затем инициализировать новый объект Hashtable. Вот пример:
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"]);
}
}
Добавление и доступ к данным
Вы можете добавлять данные в Hashtable с помощью метода Add
. Чтобы получить значение, используйте ключ внутри квадратных скобок:
myHashtable.Add("Health", 100);
int health = (int)myHashtable["Health"];
Debug.Log("Health: " + health);
Если ключ уже существует, попытка использовать Add
вызовет исключение. Вместо этого используйте ключ напрямую для обновления значения:
myHashtable["Health"] = 80; // Updates the value associated with the key
Проверка ключей и значений
Чтобы проверить, существует ли ключ в Hashtable, используйте метод ContainsKey
. Аналогично, используйте ContainsValue
для проверки значения:
if (myHashtable.ContainsKey("Score"))
{
Debug.Log("Score exists: " + myHashtable["Score"]);
}
if (myHashtable.ContainsValue(1500))
{
Debug.Log("Value 1500 is in the Hashtable.");
}
Удаление данных
Удалить запись из хеш-таблицы можно с помощью метода Remove
:
myHashtable.Remove("Level");
Debug.Log("Level removed.");
Итерация по хеш-таблице
Для перебора всех пар ключ-значение в хеш-таблице используйте цикл foreach
:
foreach (DictionaryEntry entry in myHashtable)
{
Debug.Log("Key: " + entry.Key + ", Value: " + entry.Value);
}
Ограничения хеш-таблиц
Хеш-таблицы не являются универсальными и не обеспечивают безопасность типов. Если вам нужна лучшая безопасность типов и производительность, рассмотрите возможность использования универсального Dictionary
из пространства имен System.Collections.Generic
. Хеш-таблицы в основном полезны при работе с неуниверсальными коллекциями или при взаимодействии со старыми кодовыми базами.
Заключение
Hashtables в Unity предоставляют простой способ управления парами ключ-значение в ваших проектах. Хотя они не являются самым современным типом коллекции, они остаются допустимым выбором для многих сценариев. Понимая, как создавать, получать доступ и манипулировать Hashtables, вы можете эффективно управлять данными в своих приложениях Unity.