Внешние файлы
Часть раздела Объектно-ориентированное программирование путешествия по GDScript на Coddy. Урок 1 из 65.
Настоящие программы разделены на несколько файлов. Каждый файл .gd — это скрипт, и один скрипт может использовать другой.
Напиши class_name в начале скрипта, чтобы задать ему глобальное имя. Тогда любой другой скрипт в проекте сможет использовать это имя напрямую, без строки импорта:
# greeter.gd
class_name Greeter
extends RefCounted
static func greet(player_name: String) -> String:
return "Hello, " + player_name + "!"static func создаёт функцию, которую можно вызвать через имя скрипта: Greeter.greet("Ada"). extends RefCounted — это простой базовый класс для скриптов, которые не являются узлами; следующие уроки объяснят его.
# main.gd
extends Node
func _ready():
print(Greeter.greet("Ada")) # Hello, Ada!Программа по-прежнему запускается в _ready() файла main.gd. В остальных файлах только определяются элементы, которые использует main.gd.
Godot называет файлы в snake_case, а class_name — в PascalCase: class_name Greeter находится в greeter.gd. Размещай один класс в каждом файле.
Скрипт без class_name можно загрузить по его пути с помощью preload():
const Helpers = preload("res://helpers.gd")
func _ready():
print(Helpers.shout("hi")) # HI!Задание
ЛегкоНапиши статическую функцию greet в greeter.gd. Она принимает имя игрока и возвращает Hello, NAME!. Если имя пустое, она возвращает Hello, friend!.
Предоставленный код считывает, сколько имён следует далее, а затем для каждого выводит Greeter.greet(). Для имён Ada и пустой строки он выводит:
Hello, Ada!
Hello, friend!Твой код нужно поместить в greeter.gd. В main.gd находится предоставленный код ввода/вывода, его нельзя редактировать.
Попробуйте сами
extends Node
func _ready():
# Предоставленный код ввода-вывода: оставьте его без изменений
var count := int(OS.read_string_from_stdin())
for i in count:
print(Greeter.greet(OS.read_string_from_stdin()))
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Внешние файлыВведение в ООПКлассы и объектыКлючевое слово selfМетодыСвойстваКонструктор (_init)Повторение: простой калькулятор4Полиморфизм
Переопределение методов: повторениеУтиная типизацияАбстрактные классы и методыПроектирование интерфейсовПовторение — калькулятор фигур7Сигналы
Что такое сигнал?Объявление и отправкаПодключение к сигналамСигналы с аргументамиПовторение — система здоровья10Паттерны проектирования. Часть 2
Паттерн «Команда»Паттерн «Адаптер»Паттерн «Декоратор»Паттерн «Шаблонный метод»Паттерн «Состояние»Паттерн «Компоновщик»2Свойства классов
Переменные экземпляра и классаСтатические функцииСеттеры свойствГеттеры свойствПриватность по соглашениюПовторение — менеджер банковского счёта5Инкапсуляция
Открытые и закрытые членыПроверка данных с помощью сеттеровСокрытие информацииСвойства только для чтенияПовторение — система учета студентов8Продвинутые концепции ООП
Композиция и наследованиеВнутренние классыУзлы как компонентыRefCounted и NodeПеречисления в классах11Проект: Управление библиотекой
Обзор проектаКлассы книг и пользователей3Наследование
Основы наследованияКлючевое слово superПереопределение методовЦепочки наследованияПроверка типов с помощью isПовторение — иерархия сотрудников6Специальные методы
Введение в виртуальные методыМетод _to_stringПользовательские итераторыПовторение: пользовательский список9Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн «Одиночка»Паттерн «Фабрика»Паттерн «Наблюдатель»Паттерн «Стратегия»Потренируйтесь самостоятельно: Онлайн-компилятор GDScript