В языке GDScript есть такие понятия как сеттер и геттер. Что это такое и как это использовать?
Сеттер и геттер – это функции, которые срабатывают при взаимодействии с переменной. Сеттер срабатывает, когда задаётся значение у переменной, а геттер - когда нужно получить значение из переменной.
При получении значения из переменной вызывается функция, назначенная в качестве геттера. Эта функция должна возвращать какое-либо значение. А при изменении значения переменной, срабатывает функция, назначенная в качестве сеттера. Такая функция не должна ничего возвращать.
Изначально в переменных уже есть встроенный сеттер и геттер. Сеттер здесь задаёт значение переменной на новое значение, а геттер просто возвращает значение переменной. В общем, это их функционал по умолчанию.
Если в функции, назначенной в качестве сеттера, не задаётся значение переменной, сеттером которой и назначена эта же самая функция, то значение переменной не изменится.
В версиях Godot ранее 4.0 сеттеры и геттеры не будут работать, если вы взаимодействуйте с переменной из одного и того же скрипта. Также там нельзя назначить лишь один геттер у переменной, обязательно должен присутствовать сеттер.
Как задать сеттер и геттер переменной?
Для примера создадим переменную variable, значение которой будет равняться одному.
Задать сеттер и геттер в Godot 4.0 и новее можно двумя способами.
Первый способ – использование встроенных функций.
После значения нужно добавить двоеточие и переместиться на следующую строку. Внутри можно создать и редактировать такие функции как set и get, думаю, по их названиям можно понять, где сеттер, а где геттер. Эти функции не обладают полным функционалом функций.
В set обязательно должен быть один аргумент, и функция, как я уже говорил, не должна ничего возвращать.
В get не должно быть аргументов, в нём даже скобочек быть не должно, двоеточие сразу после get. Как я уже говорил, геттер обязательно должен возвращать какое-либо значение.
Этот способ удобен тем, что не нужно создавать отдельные функции, о чём и будет рассказываться во втором способе.
Второй способ – использование отдельных функций.
Вы можете создать отдельные функции для сеттера и геттера и ссылаться на них уже внутри переменной. Для этого создайте функции для сеттера и геттера:
Далее, после значения переменной добавьте двоеточие, как и в первом способе. После чего вы можете задать значения у set и get на Callable ваших функций (вписать названия функций без скобочек и аргументов).
Не забудьте поставить запятую после первого значения.
В версиях Godot старше 4.0 есть только один способ создания сеттеров и геттеров, он похож на второй способ реализации из версий новее.
В этих версиях есть такой оператор как setget, именно с помощью него можно задать сеттер и геттер. Создайте функции для сеттера и геттера:
Способ реализации сеттера и геттера:
Обратите внимание, что ранее было сказано, что сеттер и геттер не будут работать, если взаимодействие с переменной происходило в том же скрипте, что и переменная. Такого нет в версиях 4.0 и позднее. Если вы хотите пользоваться сеттерами и геттерами в одном скрипте с переменной, то пользуйтесь функциями, которые назначены сеттерами и геттерами.
Примеры использования
Здесь показаны примеры использования сеттеров и геттеров: