FileSystem
Namespace: Vortex.Unity.FileSystem.Bus
Сборка: ru.vortex.unity.filesystem
Назначение
Платформонезависимое определение пути файлового вывода приложения и создание директорий.
Возможности:
- Автоматическое определение пути хранения при старте приложения
- В редакторе — папка
_OutputFilesрядом с корнем проекта - На устройстве —
Application.persistentDataPath - Создание директорий по произвольному пути
Вне ответственности:
- Чтение и запись файлов
- Управление правами доступа
- Разрешение платформенных путей (кроме
GetAppPath)
Зависимости
Нет внешних зависимостей. Сборка автономна.
Архитектура
FileSystem/
├── Bus/
│ └── FileBus.cs # Статический API: GetAppPath(), CreateFolders()
└── Controllers/
└── AndroidPathResolver.cs # [Obsolete] Android-интероп (не используется)
FileBus (статический класс)
Шина доступа к файловой системе. Инициализируется автоматически через [RuntimeInitializeOnLoadMethod].
Определение пути:
- В редакторе: берёт
Application.dataPath, отбрасывает последний компонент, заменяет его на_OutputFiles - На устройстве:
Application.persistentDataPath
Путь вычисляется один раз и кэшируется в _path. При вызове GetAppPath() до инициализации — ленивая инициализация.
AndroidPathResolver (internal, Obsolete)
Помечен [Obsolete]. Код полностью закомментирован. Не используется.
API
| Метод | Сигнатура | Описание |
|---|---|---|
FileBus.GetAppPath() |
public static string |
Путь к директории вывода (кэшированный) |
FileBus.CreateFolders(directory) |
public static void |
Создаёт директорию, если не существует |
Платформенное поведение
| Платформа | Путь |
|---|---|
| Редактор (все платформы) | {ProjectRoot}/_OutputFiles |
| Устройство (все платформы) | Application.persistentDataPath |
Граничные случаи
| Ситуация | Поведение |
|---|---|
GetAppPath() до инициализации |
Ленивая инициализация при первом вызове |
_path остался null после инициализации |
Возвращает пустую строку |
CreateFolders() — директория существует |
Идемпотентно, ничего не происходит |
CreateFolders() — вложенные директории |
Directory.CreateDirectory создаёт всю цепочку |