sexta-feira, 25 de abril de 2014

Classes x Objetos em Blueprints

Os termos "Classes" e "Objetos" podem confundir quem está iniciando em Blueprints. Quando criamos um novo Blueprint, nós estamos criando uma classe, que é uma espécie de modelo que define as características e comportamento dos objetos que são criados a partir desta classe. 

Por exemplo, nos artigos anteriores eu criei uma classe chamada "HelloUnreal" contendo um "Static Mesh". A imagem abaixo mostra 4 objetos desta classe que foram adicionadas ao nível.


Estes objetos também são conhecidos como instâncias da classe "HelloUnreal". O termo "instância" é muito comum no editor da Unreal Engine 4, por isso é importante se familiarizar com ele.

Os Atores são os objetos que podem ser adicionados ao nível.

Cada objeto possui o seu próprio conjunto de variáveis baseado na classe de origem mas com valores independentes em relação aos outros objetos. Imagine uma classe do tipo "Pessoa", nós seríamos objetos desta classe com nomes, idades e pesos diferentes. 

Em um blueprint podemos criar uma variável que referencia outros objetos, a imagem abaixo mostra o início da listagem de objetos disponíveis na seleção de tipo da variável:


Podemos também criar variáveis que referenciam as classes:


O mais comum é a criação de variáveis referenciando objetos. As variáveis que referenciam classes só são usadas em alguns casos bem específicos.

Como exemplo, vamos criar um novo blueprint com uma variável que referencia outro objeto blueprint, que neste caso será o blueprint HelloUnreal. Isto permitirá a comunicação entre os blueprints e é muito útil na criação de um jogo.

Crie um novo blueprint com o nome "ObjRef" (ou qualquer outro nome a sua escolha). Crie uma nova variável com nome "HelloObj", marque a opção "Editable" e no tipo da variável procure dentro da categoria "object" pela classe blueprint "HelloUnreal_C".


O nome das classes criadas por blueprints possui o sufixo "_C" que é inserido automaticamente pelo editor. 
( Nota: Após a versão 4.5 do editor, este sufixo "_C" deixou de ser utilizado e o nome da classe ficou igual ao nome do Blueprint )

Adicione este novo blueprint no nível. A imagem abaixo mostra a aba "Details" contendo a variável "HelloObj".


Clique no ComboBox ao lado do nome da variável "HelloObj". O editor irá listar os Atores que estão no nível que pertencem a classe HelloUnreal. Escolha um da lista.


No modo "Graph" do blueprint "ObjRef" podemos arrastar a variável "HelloObj" para o "EventGraph" usando a opção "Get", com isso teremos acesso as variáveis e funções do blueprint que está sendo referenciado pela variável.

Clique para aumentar