Как найти путь к файлу unity

Обновлено: 07.07.2024

Приветствую всех друзья! В прошлой статье я рассказал об окне Check for updates в Unity. Сегодня речь пойдет о методах ввода в редакторе Unity, и специальных именах папок, используемых для различных целей.

Картинка для привлечения внимания из открытых источников Картинка для привлечения внимания из открытых источников

Методы ввода в редакторе Unity.

Метод ввода ( IME ) - это компонент операционной системы или программа, которая позволяет пользователям вводить символы, не найденные на их устройстве ввода. Например, на компьютере это позволяет пользователю "западных" клавиатур вводить китайские, японские, корейские и индийские символы. На многих портативных устройствах, таких как мобильные телефоны, он позволяет с помощью цифровой клавиатуры вводить символы латинского алфавита.

Термин "метод ввода" обычно относится к определенному способу использования клавиатуры для ввода определенного языка, например, методу «Цанцзе» ( Cangjie ), методу «пиньинь» ( pinyin ) или использованию «мертвых» клавиш.

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

Для получения дополнительной информации и оптимизации при написании символов, отличных от ASCII , проверьте параметр character в свойствах шрифта.

Специальные имена папок в Unity.

Обычно вы можете выбрать любое имя для папок, которые вы создаете, чтобы организовать свой проект Unity. Однако существует ряд имен папок, которые Unity интерпретирует как указание на то, что содержимое папки должно быть обработано особым образом. Например, вы должны разместить скрипты редактора в папке под названием Editor , чтобы они работали правильно.

Ниже я приведу полный список специальных имен папок, используемых Unity.

Assets.

Папка Assets - это основная папка, содержащая ресурсы, используемые проектом Unity. Содержимое окна проекта ( Project view ) в редакторе напрямую соответствует содержимому папки Assets . Большинство функций API предполагают, что все находится в папке Assets , и поэтому не требуют, чтобы это было упомянуто явно. Однако некоторые функции должны иметь папку Assets , включенную в качестве части пути (например, некоторые функции в классе AssetDatabase ).

Editor.

Скрипты, помещенные в папку с именем Editor , рассматриваются как скрипты редактора, а не как скрипты для игры. Эти скрипты добавляют функциональность редактору во время разработки и недоступны в сборках во время выполнения.

Вы можете иметь несколько папок редактора, размещенных в любом месте папки Assets . Поместите скрипты редактора в папку редактора или вложенную папку внутри нее.

Точное расположение папки редактора влияет на время, в течение которого ее скрипты будут компилироваться относительно других скриптов. Используйте функцию EditorGUIUtility.Load в скриптах редактора которая позволяет загружать ресурсы из папки Resources в папке Editor . Эти ресурсы могут быть загружены только с помощью скриптов редактора и удалены из сборок.

Editor Default Resources.

Скрипты редактора могут использовать ассеты, загруженные по требованию с помощью функции EditorGUIUtility.Load . Эта функция ищет ассеты в папке, называемой ресурсами редактора по умолчанию ( Editor Default Resources ).

У вас может быть только одна папка ресурсов редактора по умолчанию, и она должна быть размещена в корневом каталоге проекта, непосредственно в папке Assets . Поместите необходимые файлы ресурсов в эту папку ресурсов редактора по умолчанию или вложенную папку внутри нее. Всегда включайте путь вложенной папки в путь, переданный в EditorGUIUtility.Load , если ваши ассеты находятся в подпапках.

Gizmos.

Gizmos позволяют добавлять графику в представление сцены ( Scene View ), чтобы помочь визуализировать детали дизайна, которые в противном случае невидимы. Gizmos.DrawIcon помещает иконку в сцену, чтобы она действовала как маркер для специального объекта или позиции. Вы должны поместить файл изображения, используемый для рисования этого значка, в папку под названием Gizmos , чтобы он был выставлен с помощью функции DrawIcon .

У вас может быть только одна папка Gizmos , и она должна быть размещена в корне проекта, непосредственно в папке Assets . Поместите необходимые ассеты в эту папку Gizmos или вложенную папку внутри нее. Всегда включайте путь вложенной папки в путь, переданный к функции Gizmos.DrawIcon , если ваши ассеты находятся в подпапках.

Resources.

Вы можете загружать ассеты по требованию из скрипта вместо того, чтобы создавать экземпляры ассетов в сцене для использования в игровом процессе. Это можно сделать, поместив ресурсы в папку под названием Resources . Загрузите эти ассеты с помощью функции Resources.Load .

Вы можете иметь несколько папок ресурсов, размещенных в любом месте папки Assets . Поместите необходимые ассеты в папку ресурсов или вложенную папку внутри нее. Всегда включайте путь вложенной папки в путь, передаваемый функции Resources.Load , если ваши ассеты находятся в подпапках.

Обратите внимание, что если папка Resources является подпапкой редактора, то ресурсы в ней загружаются из скриптов редактора, но удаляются из сборок.

Standard Assets.

При импорте стандартного ассета (меню: Assets/Import Package ) ассеты помещаются в папку, называемую Standard Assets . Помимо того, что эти папки содержат ресурсы, они также влияют на порядок компиляции скриптов.

У вас может быть только одна папка Standard Assets , и она должна быть размещена в корне проекта, непосредственно в папке Assets . Поместите необходимые ассеты в эту папку или вложенную папку внутри нее.

StreamingAssets.

Возможно, вы захотите, чтобы ресурс был доступен в виде отдельного файла в его исходном формате, хотя чаще всего он непосредственно включается в сборку. Например, вам нужно получить доступ к видеофайлу из файловой системы, а не использовать его в качестве MovieTexture для воспроизведения этого видео на iOS . Поместите файл в папку под названием StreamingAssets , чтобы он был скопирован без изменений на целевую машину, где он затем будет доступен из определенной папки.

У вас может быть только одна папка StreamingAssets , и она должна быть размещена в корне проекта, непосредственно в папке Assets . Поместите необходимые файлы ресурсов в папку StreamingAssets или вложенную папку внутри нее. Всегда включайте путь к подпапке в путь, используемый для ссылки на потоковый ресурс, если ваши ассеты находятся в подпапках.

Hidden Assets.

Во время процесса импорта Unity полностью игнорирует следующие файлы и папки в папке Assets (или вложенной папке внутри нее):

  • Скрытые папки.
  • Файлы и папки, которые начинаются с ‘.’.
  • Файлы и папки, которые заканчиваются на"

Это используется для предотвращения импорта специальных и временных файлов, созданных операционной системой или другими приложениями.

На сегодня это все. Следующая статья будет посвящена поддержке редактирования нескольких сцен одновременно в окне Scene View . Спасибо всем, кто дочитал эту статью до конца, подписывайтесь на канал, ставьте лайки, а для тех, у кого появились вопросы - спрашивайте в комментариях! А если вы хотите помочь данному каналу в развитии – делитесь этой статьей с друзьями в социальных сетях!

Не работает GetFiles т.к. всё пакуется и вот и вся проблема.. Мне тут советовали сформировать список файлов и запихнуть его скажем в текстовый файл, который я смогу прочитать..

Есть другие пути ?

> Не работает GetFiles т.к. всё пакуется
Что где пакуется? System.IO.Directory.GetFiles вполне себе нормально работает. Или ты хочешь список файлов из папки внутри Resources?

Если у тебя есть какое-то множество файлов в каком-то формате, который к Unity не имеет отношения, можешь папку с этими файлами просто скопировать в папку с готовым билдом и читать их оттуда при помощи обычного Directory.GetFiles, как любые другие файлы на диске.

alexzzzz
А тебе не кажется, что это дополнительные телодвижения при том не эффективные ибо ресурсы твои будут дублироваться.. Ты когда билдишь проект, все ресурсы пакуются. GetFiles же работает с файловой системой и не работает внутри этой фигни.. Сейчас я вставил временный костыль, но мне он не нравится: создал текстовый файл, поместил туда список файлов для загрузки с внутренними путями. Загрузил файл как TextAsset и вытянул все файлы для загрузки из него.. Да грузятся ресы через Resources.Load

Gladiator
> Сейчас я вставил временный костыль, но мне он не нравится
Список файлов можно автоматически генерировать и сразу записывать в нужный компонент, чтобы потом не читать текстовый файл.
alexzzzz
> Если у тебя есть какое-то множество файлов в каком-то формате, который к Unity
> не имеет отношения, можешь папку с этими файлами просто скопировать в папку с
> готовым билдом
Еще можно StreamingAssets использовать.

Gladiator
> это дополнительные телодвижения при том не эффективные ибо ресурсы твои будут
> дублироваться

Естественно, если папку с файлами добавлять к билду вручную, то в папке Resources им делать больше нечего. Для отладки внутри редактора эту же папку с файлами можно положить в папку проекта (внутри которой лежит Assets) - она по умолчанию является рабочей папкой. После запуска билда по умолчанию рабочей папкой является папка, где лежит .exe.

Смысл существования папки Resources в том, что в неё можно класть ресурсы, которые Unity понимает - картинки, модели, настроенные префабы, экземпляры ScriptableObject. Они будут храниться там в формате, сразу готовом к употреблению в рантайме.

А если у нас файлы совершенно левого формата, то для standalone, имхо, проще хранить их в родном виде отдельно.

Добрый вечер хабрчане, решил перевести один единственный урок из раздела Архитектура — MASTERING UNITY PROJECT FOLDER STRUCTURE — VERSION CONTROL SYSTEMS на официальном сайте Unity. В самом конце статья немного модифицирована, была изменена настройка проекта VCS (Version Control System).

P.S для тех кто только знакомится с Unity3d и предпочитает видеоуроки советую ознакомится с официальными видеоуроками для новичка на русском языке.

В этом уроке я хочу пролить немного света на:
— Структуру папок проекта в Unity.
— Какие папки и файлы необходимы для систем контроля версий (VCS).

Давайте создадим новый проект в Unity под названием «testproject», и импортируем пакет «Standard Assets (Mobile)», создадим новый сценарий Test.cs, присоединим его к камере и проверим нашу структуру папок.

image

Вот краткий обзор всех файлов и папок.

Assembly-UnityScript-vs.unityproj и Assembly-UnityScript.unityproj – те же файлы проекта, но для скриптов JavaScript.

СОВЕТ: После синхронизации проекта в MonoDevelop, тогда откроется testproject.sln со всеми файлами проекта, но если у вас нет кода JavaScript, то в проекте вы можете открыть TestProject-csharp.sln, который иметь в два раза меньше файлов проекта и никаких ошибок связанных с JS.

структура папок проекта в Unity:

image

Assets — папка, в которой хранятся все игровые ресурсы, в том числе скрипты, текстуры, звуки и т.д. Определенно это самая важная папка в вашем проекте.

ProjectSettings — в этой папке хранятся все настройки проекта Unity, такие как физика, теги, игровые настройки и т.д. Другими словами все, настройки которые вы сделали в меню Edit → Project Settings переходит в эту папку.

image

Library – локальный кэш для импортируемых Assets, при использовании внешней системы контроля версий (VCS) эта папка должна быть исключена из списка VCS.

OBJ и Temp — папки для временных файлов, создаваемых во время сборки проекта, OBJ используется MonoDevelop, Temp используется Unity.

Вот краткое руководство для Unity 4.x установка:

Теперь вы готовы использовать свою любимую систему управления версиями (VCS). Не забудьте добавить все папки в список игнорируемых, кроме Assets и ProjectSettings папок.

Не работает GetFiles т.к. всё пакуется и вот и вся проблема.. Мне тут советовали сформировать список файлов и запихнуть его скажем в текстовый файл, который я смогу прочитать..

Есть другие пути ?

> Не работает GetFiles т.к. всё пакуется
Что где пакуется? System.IO.Directory.GetFiles вполне себе нормально работает. Или ты хочешь список файлов из папки внутри Resources?

Если у тебя есть какое-то множество файлов в каком-то формате, который к Unity не имеет отношения, можешь папку с этими файлами просто скопировать в папку с готовым билдом и читать их оттуда при помощи обычного Directory.GetFiles, как любые другие файлы на диске.

alexzzzz
А тебе не кажется, что это дополнительные телодвижения при том не эффективные ибо ресурсы твои будут дублироваться.. Ты когда билдишь проект, все ресурсы пакуются. GetFiles же работает с файловой системой и не работает внутри этой фигни.. Сейчас я вставил временный костыль, но мне он не нравится: создал текстовый файл, поместил туда список файлов для загрузки с внутренними путями. Загрузил файл как TextAsset и вытянул все файлы для загрузки из него.. Да грузятся ресы через Resources.Load

Gladiator
> Сейчас я вставил временный костыль, но мне он не нравится
Список файлов можно автоматически генерировать и сразу записывать в нужный компонент, чтобы потом не читать текстовый файл.
alexzzzz
> Если у тебя есть какое-то множество файлов в каком-то формате, который к Unity
> не имеет отношения, можешь папку с этими файлами просто скопировать в папку с
> готовым билдом
Еще можно StreamingAssets использовать.

Gladiator
> это дополнительные телодвижения при том не эффективные ибо ресурсы твои будут
> дублироваться

Естественно, если папку с файлами добавлять к билду вручную, то в папке Resources им делать больше нечего. Для отладки внутри редактора эту же папку с файлами можно положить в папку проекта (внутри которой лежит Assets) - она по умолчанию является рабочей папкой. После запуска билда по умолчанию рабочей папкой является папка, где лежит .exe.

Смысл существования папки Resources в том, что в неё можно класть ресурсы, которые Unity понимает - картинки, модели, настроенные префабы, экземпляры ScriptableObject. Они будут храниться там в формате, сразу готовом к употреблению в рантайме.

А если у нас файлы совершенно левого формата, то для standalone, имхо, проще хранить их в родном виде отдельно.

Читайте также: