Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Файловая система

Введение

Файловая система управляет тем, как хранятся ресурсы и как к ним осуществляется доступ. Хорошо продуманная файловая система также позволяет нескольким разработчикам редактировать одни и те же исходные файлы и ресурсы во время совместной работы. Godot хранит всю библиотеку ресурсов в виде файлов в своей файловой системе.

Реализация

Файловая система хранит ресурсы на диске. Все, что угодно, от скриптов до сцен или изображений PNG, являются ресурсом для движка. Если ресурс содержит свойства, которые ссылаются на другие ресурсы на диске, пути к ним также включаются. Если ресурс имеет встроенные суб-ресурсы, то он сохраняется в одном файле вместе со всеми включенными в комплект суб-ресурсами. Например, ресурс шрифтов часто поставляется в комплекте с текстурами шрифтов.

The Godot file system avoids using metadata files. Existing asset managers and VCSs are better than anything we can implement, so Godot tries its best to play along with Subversion, Git, Mercurial, etc.

Пример содержимого файловой системы:

/project.godot
/enemy/enemy.tscn
/enemy/enemy.gd
/enemy/enemysprite.png
/player/player.gd

project.godot

Файл project.godot - это файл описания проекта, который всегда находится в корне самого проекта. Фактически, его местоположение определяет то, где находится корень. Это первый файл, который Godot ищет при открытии проекта.

Этот файл содержит конфигурацию проекта в виде простого текста в формате win.ini. Даже пустой project.godot может функционировать как базовое определение пустого проекта.

Разделитель путей

Godot поддерживает только / в качестве разделителя путей. Это делается по причинам переносимости. Все операционные системы поддерживают это, даже Windows, поэтому путь C:\project\project.godot должен быть напечатан как C:/project/project.godot.

Путь к ресурсу

При доступе к ресурсам, использование структуры файловой системы ОС может быть громоздким и непортируемым. Для решения этой проблемы был создан специальный путь res://.

Путь res:// всегда будет указывать на корень проекта (где расположен project.godot, поэтому путь res://project.godot всегда действителен).

Эта файловая система читает-записывает только при локальном запуске проекта из редактора. При экспорте или при работе на различных устройствах (таких как телефоны или консоли, или при запуске с DVD) файловая система станет доступна только для чтения и запись больше не будет разрешена.

Путь пользователя

Запись на диск все еще необходима для различных задач, таких как сохранение игрового состояния или загрузка пакетов контента. Для этого движок обеспечивает специальный путь user://, который всегда доступен для записи. Этот путь меняется в зависимости от операционной системы, на которой запущен проект. Расположение локального пути объясняется в разделе File paths in Godot projects.

Родительская файловая система

В качестве альтернативы можно также использовать пути родительской файловой системы, но этого не рекомендуется делать для выпущенного продукта, так как не гарантируется работа этих путей на всех платформах. Однако использование путей родительской файловой системы может быть полезно при написании средств разработки в Godot.

Недостатки

There are some drawbacks to this file system design. The first issue is that moving assets around (renaming them or moving them from one path to another inside the project) will break existing references to these assets. These references will have to be re-defined to point at the new asset location.

Чтобы избежать этого, выполните все свои действия по перемещению, удалению и переименованию из Godot, в панели файловой системы. Никогда не перемещайте активы вне Godot, иначе зависимости придется исправлять вручную (Godot все равно обнаружит это и поможет вам исправить их, но зачем идти трудным путем?).

Во-вторых, имена файлов и путей в Windows и MacOS не зависят от регистра. Если разработчик, работающий в нечувствительной к регистру родительской файловой системе, сохраняет актив как myfile.PNG, но затем ссылается на него как на "myfile.png", он будет прекрасно работать на их платформе, но не на других платформах, таких как Linux, Android и т.д. Это может также применяться к экспортируемым двоичным файлам, которые используют сжатый пакет для хранения всех файлов.

It is recommended that your team clearly define a naming convention for files when working with Godot. One fool-proof convention is to only allow lowercase file and path names.