Um Map permite o armazenado de pares chave->valor. Isto é usado para fazer associação entre valores. O exemplo abaixo cria uma variável Map usando string para o tipo da chave e int (inteiro) para o tipo do valor.
var HealthItemSizes : [string]int = map{"small" => 25, "medium" => 50, "big" => 75, "mega" => 100}
Para consultar um valor associado a uma chave no Map, use a chave dentro de [] como mostra o exemplo abaixo. O acesso a um valor em um Map é uma expressão falível.
if(Points := HealthItemSizes["medium"]):
Print("The medium Health Item recovers {Points} health points.")
Você pode adicionar elementos em uma variável Map usando o set com uma nova chave. Se a chave usada já existir no Map, o valor associada a esta chave será atualizado.
if(set HealthItemSizes["ultra"] = 150):
Print("Size ultra added to the map.")
A quantidade de elementos de um Map pode ser acessada usando a propriedade Length.
Print("Number of elements in the Map: {HealthItemSizes.Length}")
O laço For pode ser utilizado para percorrer os elementos de um Map como mostra o exemplo a seguir. A cada iteração do laço For, a chave e o valor de um elemento do Map são armazenados em Key e Value.
for (Key->Value : HealthItemSizes):
Print("Size: {Key} | Points: {Value}")
Vamos criar um dispositivo no UEFN para mostrar estes conceitos do Map. Em qualquer projeto UEFN, abra o Verse Explorer, clique com o botão-direito no nome do projeto e escolha a opção Add new Verse file to project.
Em Device Name coloque map_device e clique no botão Create Empty.
Copie o código Verse abaixo para o dispositivo map_device:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
map_device := class(creative_device):
@editable
HealthExtended : logic = true
var HealthItemSizes : [string]int = map{"small" => 25, "medium" => 50, "big" => 75, "mega" => 100}
OnBegin<override>()<suspends>:void=
if(HealthExtended?):
if(set HealthItemSizes["ultra"] = 150, set HealthItemSizes["monster"] = 200):
Print("Health Extended elements added to the map.")
Print("The medium Health Item recovers {GetHealthItemPoints("medium")} health points.")
Print("------- MAP CONTENTS -------")
for (Key->Value : HealthItemSizes):
Print("Size: {Key} | Points: {Value}")
Print("Number of elements in the Map: {HealthItemSizes.Length}")
GetHealthItemPoints(Size:string):int=
if(Points := HealthItemSizes[Size]):
Points
else:
0
# O comando return é opcional. A função retorna o resultado da última expressão executada.
A constante HealthExtended pode ser editada no editor do UEFN. Ela está sendo usada para adicionar outros elementos no Map.
Salve o arquivo e compile o código Verse usando a opção Verse > Build Verse Code do menu do UEFN.
Acesse o Content Drawer e adicione o nosso dispositivo Verse map_device ao nível.
Clique no botão Launch Session localizado na barra de ferramentas do UEFN para carregar o nível no Fortnite.
Após iniciar a partida no Fortnite, pressione a tecla Tab e selecione a aba Registro para visualizar o log com as mensagens escritas pelas funções Print.