Uma classe é um modelo que define atributos e comportamentos. Quando criamos uma classe Verse, o editor nos fornece algumas opções de modelos. Estes modelos são classes que serão usadas como classe pai. Os atributos e comportamentos da classe pai serão herdados pela nova classe.
Quando arrastamos um dispositivo criativo e soltamos no nível, estamos criando uma instância da classe do dispositivo criativo. Cada instância pode ter valores diferentes para os seus atributos. Fazendo uma analogia, nós somos instâncias de uma classe Pessoa. A classe Pessoa tem o atributo Nome e cada um de nós podemos ter nomes diferentes.
Na criação de uma classe usamos constantes e variáveis para especificar os atributos. O comportamento é definido usando funções.
Além das classes disponíveis como templates no UEFN podemos criar classes simples em Verse. O exemplo abaixo cria uma classe com o nome health_item com três constantes de tipos diferentes e uma função chamada PrintData() que escreve na tela os valores da instância atual.
health_item := class:
Name : string
HealthPoints : int = 10
Weight : float = 2.0
PrintData() : void =
Print("*** health_item instance ***")
Print("Name = {Name}")
Print("HealthPoints = {HealthPoints}")
Print("Weight = {Weight}")
Print("****************************")
As constantes HealthPoints e Weight possuem valores padrões que serão usados caso não sejam fornecidos outros valores na criação da instância desta classe.
As linhas abaixo estão criando duas instâncias da classe health_item. Na primeira instância está sendo atribuído valor somente para a constante Name. As outras constantes usam os valores padrões. Na segunda instância, as três constantes estão recebendo valores de inicialização.
HealthItemInstance1 : health_item = health_item{Name := "Fruit"}
HealthItemInstance2 : health_item = health_item{Name := "Potion",
HealthPoints := 15,
Weight := 1.5}
HealthItemInstance1 e HealthItemInstance2 são referências usadas para acessar as instâncias da classe health_item que foram criadas.
Com uma referência podemos acessar as constantes/variáveis e funções de uma classe usando "." como mostra o exemplo abaixo.
HealthItemInstance1.PrintData()
HealthItemInstance2.PrintData()
if (HealthItemInstance1.Weight > HealthItemInstance2.Weight):
Print("{HealthItemInstance1.Name} is heavier than {HealthItemInstance2.Name}")
Vamos criar um dispositivo no UEFN para mostrar como esta nova classe pode ser usado no arquivo do novo dispositivo.
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 class_instance_device e clique no botão Create Empty.
Copie o código Verse abaixo para o dispositivo class_instance_device:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
health_item := class:
Name : string
HealthPoints : int = 10
Weight : float = 2.0
PrintData() : void =
Print("*** health_item instance ***")
Print("Name = {Name}")
Print("HealthPoints = {HealthPoints}")
Print("Weight = {Weight}")
Print("****************************")
class_instance_device := class(creative_device):
HealthItemInstance1 : health_item = health_item{Name := "Fruit"}
HealthItemInstance2 : health_item = health_item{Name := "Potion",
HealthPoints := 15,
Weight := 1.5}
OnBegin<override>()<suspends>:void=
HealthItemInstance1.PrintData()
HealthItemInstance2.PrintData()
if (HealthItemInstance1.Weight > HealthItemInstance2.Weight):
Print("{HealthItemInstance1.Name} is heavier than {HealthItemInstance2.Name}")
A class_instance_device possui duas constantes que são referências para instâncias da classe health_item. Na função OnBegin chamamos a função PrintData() das instâncias para escreverem os valores de seus atributos. Depois é feita uma comparação entre as duas instâncias usando o atributo Weight.
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 class_instance_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.