Список предметов для инвентаря игрока
Скажем, мы захотели создать структуру данных С++, чтобы хранить список
предметов для инвентаря игрока. В левом столбце таблицы (ключи), у нас будет
FString для названия предметов. В правом столбце (значения), у нас будет int для
количества этих предметов.
Предмет (Ключ) Количество (Значение)
яблоки
4
пончики
12
мечи
1
щиты
2
Чтобы воплотить это в коде, мы просто пишем следующее:
TMap items;
items.Add( "
яблоки", 4 );
items.Add( "
пончики", 12 );
items.Add( "
мечи", 1 );
items.Add( "
щиты", 2 );
193 |
С т р а н и ц а
Как только вы создали ваш TMap, вы можете иметь доступ к значениям внутри
TMap, используя квадратные скобки и передавая ключ в скобках. Например, в
карте items - предметы, в предыдущем коде, items[ "яблоки" ] это 4.
Подсказка
UE4 выйдет из строя, если вы используете квадратные, чтобы получить доступ к
ключу, которого ещё нет в карте. Так что будьте осторожны! А STL C++ не выходит
из строя, если вы делаете это.
Итерация TMap
Чтобы итерировать TMap, мы конечно используем итератор:
for( TMap::TIterator it = items.CreateIterator(); it; ++it )
{
GEngine->AddOnScreenDebugMessage( count++, 30.f, FColor::Red, it->Key + FString(": ") +
FString::FromInt( it->Value ) );
}
Итераторы TMap немного отличаются от итераторов TArray и TSet. Итератор TMap
содержит и Ключ и Значение. Мы можем получить к ключу внутри TMap с it->Key и
к значению с it->Value.
194 |
С т р а н и ц а
Достарыңызбен бөлісу: |