Классы

Классы объединяют в себе данные и функции. В API Godot (Интерфейс программирования приложений) есть много предопределенных классов. Эти классы документированы в разделе API официальной документации.

Когда мы хотим использовать класс, мы обычно создаем новый экземпляр этого класса. Этот новый экземпляр класса является объектом с уникальной ссылкой. Например, узлы сцены в Godot являются экземплярами классов.

Мы создаем новую сцену, расширяя существующий класс, такой как Node2D. Вот почему первая строка кода указывает, какой класс расширяется.

Данные класса хранятся в переменных, которые мы называем свойствами. А функции называются методами. Когда мы расширяем класс, мы получаем доступ к его свойствам и методам. Кроме того, мы можем добавить свои собственные свойства и методы для расширения функционала.

Некоторые методы могут быть заменены наши собственными, такими как функции _ready и _process. Они называются виртуальными методами и имеют имя, начинающееся с подчеркивания. В большинстве примеров до сих пор мы заменили функцию _ready в расширенном классе Node2D.

Как только мы сохранили сцену, мы можем повторно использовать ее в других сценах, создавая новые экземпляры. Фактически, мы создали новый безымянный класс. Чтобы дать нашему классу имя, мы можем использовать ключевое слово ‘class_name’, чтобы зарегистрировать его как новый тип в редакторе Godot.

Пример расширения и именования нового класса:

class_name Motorcycle extends Node2D

# Add properties
export(String) var make = "Kawasaki"
export(int) var cc = 900
export(Color, RGB) var color = ColorN("Ninja Green")
var fuel = 0.0
var speed = 0.0

# Override virtual methods
func _ready():
	add_fuel(17.3)

func _process(delta):
	if fuel > 0.0:
		speed += delta
		fuel -= delta
		print(speed, "km/h")

# Add a new method
func add_fuel(litres):
	fuel += litres

ООП

Написание программ с использованием классов называется объектно-ориентированным программированием или ООП. Это помогает нам организовывать функциональность большого проекта в управляемые блоки связанной функциональности (с использованием инкапсуляции).

Способ организации модулей (архитектуры кода) описывается различными известными шаблонами проектирования. Они используются в Godot, и вот несколько примеров:

  • Шаблон синглтона — использование автозагрузочного сценария для хранения глобальных данных и глобально доступных функций.
  • Шаблон наблюдателя — использование сигналов для отправки оповещений наблюдателям (подключенные сценарии).
  • Шаблон фабрики — использование автозагрузочной сцены для хранения предопределенных узлов и имеющей функцию-генератор для предоставления экземпляра одного из этих узлов.

Наследование

Godot широко использует наследование классов, как это видно во встроенной иерархии узлов. Начиная с самого базового класса, называемого Object. Он расширяется для создания класса Node. Затем Node расширяется для создания классов Node2D, Spatial и Control.

В редакторе мы можем видеть иерархию классов, когда мы добавляем новый узел в нашу сцену. Кроме того, в панели Inspector перечисляется цепочка классов, составляющих любой узел, который мы исследуем.

Композиция

Еще одним концептом ООП является композиция. Это, когда класс состоит из экземпляров других классов. Мы составляем сцену в нашей игре, добавляя экземпляры различных узлов. Затем нашей сцене может быть присвоено значение class_name. Хотя в большинстве случаев нам это не требуется.

Вывод

Ну вот и все основы программирования на GDScript. Используйте эти знания в будущем в качестве справочного материала.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

20 − 13 =

Прокрутить вверх