Aplicando princípios de orientação a objetos em Godot¶
O motor oferece duas maneiras principais de criar objetos reutilizáveis: scripts e cenas. Nenhum deles define tecnicamente as classes subjacentes.
Ainda assim, muitas das melhores práticas usando o Godot envolvem a aplicação de princípios de programação orientada a objetos aos scripts e cenas que compõem seu jogo. É por isso que é útil entender como podemos pensar neles como classes.
Este guia explica resumidamente como os scripts e as cenas funcionam no núcleo do motor para ajudá-lo a entender como eles funcionam nos bastidores.
Como os scripts funcionam no motor¶
O motor fornece classes incorporadas como Node. Você pode estendê-las para criar tipos derivados usando um script.
Esses scripts não são tecnicamente classes. Em vez disso, são recursos que informam ao motor uma sequência de inicializações para executar em uma das classes integradas do motor.
As classes internas do Godot possuem métodos que registram os dados de uma classe com um :ref: ClassDB <class_ClassDB>. Este banco de dados fornece acesso em tempo de execução às informações da classe. ClassDB
contém informações sobre classes como:
Propriedades.
Métodos.
Constantes.
Sinais.
Este ClassDB
é o que os objetos verificam ao realizar uma operação como acessar uma propriedade ou chamar um método. Ele verifica os registros do banco de dados e os registros dos tipos base do objeto para ver se o objeto suporta a operação.
Anexar um Script ao seu objeto estende os métodos, propriedades e sinais disponíveis da ClassDB
.
Cenas¶
O comportamento das cenas tem muitas semelhanças com as classes, então pode fazer sentido pensar em uma cena como uma classe. As cenas são grupos de nós reutilizáveis, instanciados e herdáveis. Criar uma cena é semelhante a ter um script que cria nós e os adiciona como filhos usando add_child()
.
Muitas vezes emparelhamos uma cena com um nó raiz com script que faz uso dos nós da cena. Como tal, a cena é muitas vezes uma extensão do código declarativo do script.
O conteúdo de uma cena ajuda a definir:
Quais nós estão disponíveis para o script
Como eles são organizados
Como eles são inicializados
Que conexões de sinal eles têm uns com os outros
Por que isto é importante para a organização da cena? Porque instâncias de cenas são objetos. Como resultado, muitos princípios de orientação a objetos que se aplicam ao código escrito também se aplicam a cenas: responsabilidade única, encapsulamento e outros.
A cena é sempre uma extensão do script anexado ao seu nó raiz, então você pode interpretá-la como parte de uma classe.
A maioria das técnicas explicadas nesta série de melhores práticas se baseia neste ponto.