В Godot, популярном движке разработки игр с открытым исходным кодом, вы часто можете столкнуться со сценариями, в которых вам нужно получить сцены (игровые ресурсы) из определенной папки. В этой статье будут обсуждаться различные методы выполнения этой задачи и приводятся примеры кода для каждого подхода. Независимо от того, являетесь ли вы новичком или опытным разработчиком Godot, это руководство поможет вам эффективно и результативно извлекать сцены.
Методы получения сцен из папки:
Метод 1: использование класса ResourceLoader
func getScenesFromFolder(folder_path: String) -> Array:
var scene_files = []
var folder = Directory.new()
if folder.open(folder_path) == OK:
folder.list_dir_begin()
while true:
var file = folder.get_next()
if file == "":
break
if file.ends_with(".tscn"):
scene_files.append(folder_path + "/" + file)
folder.list_dir_end()
return scene_files
Метод 2: использование класса ProjectSettings
func getScenesFromFolder(folder_path: String) -> Array:
var scene_files = []
var project_settings = ProjectSettings.get_singleton()
var project_root = project_settings.globalize_path(project_settings.globalize_path_to_project(folder_path))
var dir = Directory.new()
if dir.open(project_root) == OK:
dir.list_dir_begin()
while true:
var file = dir.get_next()
if file == "":
break
if file.ends_with(".tscn"):
scene_files.append(folder_path + "/" + file)
dir.list_dir_end()
return scene_files
Метод 3. Анализ структуры папок проекта
func getScenesFromFolder(folder_path: String) -> Array:
var scene_files = []
var project_root = ProjectSettings.globalize_path(".")
var dir = Directory.new()
if dir.open(project_root) == OK:
dir.list_dir_begin()
while true:
var file = dir.get_next()
if file == "":
break
if file.ends_with(".tscn") && file.find(folder_path) == 0:
scene_files.append(file)
dir.list_dir_end()
return scene_files
Метод 4: использование API доступа к файловой системе (Godot 3.4+)
func getScenesFromFolder(folder_path: String) -> Array:
var scene_files = []
var dir = Directory.new()
if dir.open(folder_path) == OK:
dir.list_dir_begin()
while true:
var file = dir.get_next()
if file == "":
break
if file.ends_with(".tscn"):
scene_files.append(folder_path + "/" + file)
dir.list_dir_end()
return scene_files
Извлечение сцен из папки в Godot — обычное требование при разработке игр. В этой статье мы рассмотрели четыре различных метода, каждый с примерами кода, для выполнения этой задачи. В зависимости от потребностей вашего проекта и версии Godot вы можете выбрать наиболее подходящий подход. Используя эти методы, вы сможете улучшить свой рабочий процесс и эффективно управлять игровыми ресурсами.