Какие файлы находятся в папке project unity
Специальные Папки Проекта
В большинстве случаев вы можете называть папки в проекте как угодно. Однако в Unity есть специальные зарезервированные имена папок, содержимое которых Unity обрабатывает особым образом. К примеру чтобы правильно работать, скрипты расширяющие возможности редактора Unity должны быть помещены в папку с названием Editor. Полный список имен специальных папок описан ниже.
Assets
Папка Assets — главная папка в которой содержатся все ассеты, которые могут быть использованы проектом на Unity. Содержимое Project view соответствует содержимому папки Assets. Большинство функций API предполагают что всё содержится в папке Assets и не требуют явного указания расположения. Однако есть некоторые функции которым нужно явно указывать папку Assets (напр. некоторые функции класса AssetDatabase).
Editor
Все скрипты размещённые в папке Editor (или подпапке) будут расцениваться как скрипты редактора Unity нежели как скрипты проекта. Такие скрипты предназначены для расширения функционала редактора Unity и недоступны во время выполнения проекта. В проекте может быть несколько папок Editor, но надо учитывать что размещение конкретной папки Editor влияет на порядок компиляции скриптов относительно других скриптов. Подробности смотри на странице Специальные Папки и Порядок Компиляции Скриптов.
Editor Default Resources
Используя функцию EditorGUIUtility.Load скрипты редактора Unity могут загружать файлы ассетов по мере надобности. Эта функция ищет файлы ассетов в папке Editor Default Resources которая должна быть размещена в корне папки Assets.
Gizmos
“Гизмо” позволяют вам визуализировать детали реализации в окне сцены которые в обычных условиях невидны. Функция Gizmos.DrawIcon рисует в окне сцены иконку-маркер обозначающую какой либо специальный объект или местоположение в пространстве. Изображение для этой иконки-маркера следует разместить в папке Gizmos чтобы функция смогла его найти.
Plugins
Система подключаемых модулей позволяет расширять функционал Unity. Подключаемые модули это нативные DLL как правило реализованные на языке C/C++. Они позволяют получить доступ к сторонним библиотекам (например распознавания речи), системным вызовам и прочему функционалу недоступному Unity в стандартной поставке. Чтобы подключаемый модуль распознался Unity их следует разместить в папке Plugins и как и для папки Editor, это повлияет на порядок компиляции скриптов. Подробности смотри на странице Специальные Папки и Порядок Компиляции Скриптов.
Resources
Как правило создание экземпляров ассетов происходит в окне сцены и потом используется во время игры. Также в Unity есть механизм загрузки ассетов по требованию. Для этого нужно разместить ассеты в папке Resources или её подпапке (в проекте может быть несколько папок Resources и размешать их можно где угодно). Загрузить ассеты можно с помощью функции Resources.Load.
StreamingAssets
Когда вы импортируете какой-либо стандартный пакет с ассетами (menu: Assets > Import Package ) ассеты пакета размещаются в папке Standard Assets или Pro Standard Assets в случае если пакет доступен только для Про лицензии. Помимо того что папки содержат ассеты, они также влияют на порядок компиляции скриптов. Подробности смотри на странице Специальные Папки и Порядок Компиляции Скриптов.
StreamingAssets
Большинство игровых ассетов преобразуются во внутренние форматы Unity и встраиваются в собранный проект, однако есть случаи в которых нужно хранить ассеты в их исходном формате в виде отдельного файла. Например чтобы проиграть видео на платформе iOS нужно читать файл видео напрямую из файловой системы нежели использовать для этого MovieTexture. Если разместить файл в папке StreamingAssets_, при сборке проекта он будет скопирован в исходном виде на целевую платформу где будет доступен из определённой папки. Подробности смотри на странице Потоковая передача Ассетов.
WebPlayerTemplates
Для сборок под web-плеер, вы можете предоставить собственный вариант страницы для размещения web-плеера. Страница оформляется в виде шаблона который включает в себя информацию из проекта, например имя проекта. Чтобы эти шаблоны были доступны в Unity, их следует размещать в папке WebPlayerTemplates. Подробности смотри на странице Использование шаблонов Web Player. Также стоит отметить, что все скрипты, размещенные в папке WebPlayerTemplates, будут игнорироваться компилятором. Это можно использовать как временное место для хранения неготовых скриптов, из-за которых невозможно запустить игру.
Assets
During the import process Unity completely ignores the following files and folders in the Assets folder (or a sub-folder within it):
- Hidden folders.
- Files and folders which start with ‘.’.
- Files and folders which end with ‘
This is used to prevent importing special and temporary files created by operating system or other applications.
Структура Unity проекта

Каждый раз, начиная новый проект, я создаю структуру папок и элементов, которая будет основой. Не важно, какого размера в итоге получится проект, но имея четкую структуру с самого начала, с ним будет удобно работать, масштабировать, передавать другому разработчику.
Можно гуглить «best practices» и смотреть как делают другие, но все равно вы придёте к своему комфортному расположению ресурсов и элементов на сцене. А для тех, кто еще не определился с выбором, предлагаю свой вариант.
И так, структура папок:
Естественно, все нужно подстраивать под конкретную задачу и под команду, но будет лучше если придерживаться общей концепции для всех своих проектов.
Scripts служит для скриптов которые не связаны с объектами, например, менеджер звуков. Plugins нужен если обрабатываете входящие сообщения из плагинов iOS и Android. В Dynamic добавляются динамические, временные элементы созданные в процессе игры. Если вы делаете 2D игру, то в Level разумно было бы добавить разбивку по «слоям»: background, middleground, foreground.
Пробуйте, создавайте! Все придет с опытом. В любом случае, такой шаблон удобнее и практичнее, чем куча файлов в корневой папке и раскиданные элементы по сцене 🙂
Структура проекта Unity Xcode
При создании проекта Unity для iOS мобильной операционной системы Apple. Подробнее
На платформе Словарь Unity создает папку, содержащую проект Xcode. Этот проект нужен для компиляции и подписания вашего приложения перед его развертыванием на устройстве. Вам также необходимо использовать его для подготовки и сборки вашей игры для распространения в App Store. Структура проекта Xcode изменилась по сравнению с Unity 2019.3 и теперь поддерживает интеграцию Unity с собственными приложениями iOS через Unity as a Library.
Прежде чем создавать проект для iOS, убедитесь, что вы установили идентификатор пакета в настройках проигрывателя iOS** (меню: Правка > Настройки проекта > Настройки проигрывателя). Вы также можете выбрать, нацелено ли ваше приложение на симулятор или на реальное устройство. Для этого измените поле версия SDK**.
Цели проекта
Каждый созданный проект Unity iOS Xcode имеет следующую структуру и цели:
- UnityFramework: часть библиотеки в целевом объекте UnityFramework. Он включает папки Classes, UnityFramework и Libraries, а также зависимые фреймворки, и Xcode использует его для создания UnityFramework.framework. файл.
- Unity-iPhone: тонкая часть пусковой установки в цели Unity-iPhone. Он включает папку MainApp и данные представления приложения, такие как экраны запуска, файлы .xib, значки, данные и файлы /Info.plist, и он запускает библиотеку. Цель Unity-iPhone имеет одну зависимость В контексте диспетчера пакетов зависимость конкретная версия пакета (выраженная в форме имя_пакета@версия_пакета ), которая требуется проекту или другому пакету для работы. Проекты и пакеты используют атрибут dependencies в своих манифестах для определения набора требуемых пакетов. Для проектов это считается прямой зависимостью; для пакетов это косвенные или транзитивные зависимости. Подробнее
См. в Словаре цель UnityFramework.
Папка классов
Папка Classes содержит код, объединяющий среду выполнения Unity и Objective-C. Unity хранит точки входа приложения в файлах main.mm и UnityAppController.mm/h внутри этой папки. Вы можете создать свой собственный AppDelegate, производный от UnityAppController, или, если какой-либо из ваших плагинов набор кода, созданный вне Unity который создает функциональность в Unity. В Unity можно использовать два типа подключаемых модулей: управляемые подключаемые модули (управляемые сборки .NET, созданные с помощью таких инструментов, как Visual Studio) и собственные подключаемые модули (библиотеки собственного кода для конкретной платформы). Подробнее
См. в Словарь , включая AppController.h , вы можете вместо этого включить UnityAppController.h. Если ваша папка Plugins/iOS содержит_ AppController.mm/h_, вы можете объединить и переименовать их.
Файл InternalProfiler.h также определяет условие компилятора для включения внутреннего Profiler окна который поможет вам оптимизировать вашу игру. Он показывает, сколько времени вы тратите на различные области вашей игры. Например, он может сообщать о проценте времени, затраченном на рендеринг, анимацию или игровую логику. Дополнительная информация
См. в Словарь . Код в этой папке не часто меняется, и вы можете размещать здесь пользовательские классы. Если вы выберете режим Append, Xcode сохранит изменения в этой папке между сборками. Однако эта функция не поддерживает несколько целей сборки и требует фиксированной структуры папки Libraries.
Внутренний профилировщик Unity работает быстро и ненавязчиво и предоставляет основную информацию о:
- Какая подсистема занимает большую часть времени кадра.
- Размер кучи .NET.
- Количество и продолжительность событий GC.
Дополнительную информацию см. в документации по встроенному профилировщику.
Папка данных
Эта папка содержит сериализованные ресурсы вашего приложения, а также сборки .NET (файлы .dll или .dat) либо в виде полного кода, либо в виде метаданных, в зависимости от настроек удаления кода. Файл machine.config настраивает различные службы .NET, такие как безопасность и WebRequest. Xcode обновляет содержимое этой папки при каждой сборке. Вы не должны вносить в него никаких изменений.
По умолчанию Target Membership папки Data является целью Unity-iPhone, и среда выполнения Unity ищет ее в основной пакет . Чтобы изменить пакет по умолчанию, в котором Unity Runtime ищет папку Data, вызовите setDataBundleId: «com.my.product» в экземпляре UnityFramework, прежде чем вызывать одна из функций запуска. Например, если вы хотите иметь Данные вместе с вызовом UnityFramework, используйте setDataBundleId: «com.unity3d.framework» и задайте Целевое членство в UnityFramework.

Примечание. Ресурсы по требованию поддерживаются только в том случае, если папка Data является частью целевого приложения, а не частью целевого объекта UnityFramework.
Папка «Библиотеки»
Папка Libraries содержит libil2cpp.a для IL2CPP A Разработанный Unity сервер сценариев, который вы можете использовать в качестве альтернативы Mono при создании проектов для некоторых платформ. Подробнее
См. в Словарь . Файл libiPhone-lib.a представляет собой статическую библиотеку среды выполнения Unity, а файл RegisterMonoModules.cpp связывает собственный код Unity с .NET. Xcode и обновляет содержимое этой папки при каждой сборке. Вы не должны вносить в него никаких изменений.
Пользовательские папки
Вы можете разместить здесь свои пользовательские файлы.
Графические файлы
Значки и заставки (файлы .png) находятся в каталогах активов в папке Unity-iPhone. Unity автоматически управляет этими файлами. Экраны запуска, их конструкторы интерфейсов XML (файлы .xib) и файлы раскадровки хранятся в корневой папке проекта. Чтобы настроить их в Unity, используйте окно Player Настройки (меню: Edit > Project Settings > Player Settings). Когда вы создаете собственные образы запуска, убедитесь, что они соответствуют Руководство по пользовательскому интерфейсу.
Файл со списком свойств (.plist)
Вы можете управлять файлом /Info.plist в целевом устройстве Unity-iPhone (доступ через mainBundle ) из настроек проигрывателя Unity (меню: Правка > Настройки проекта > Настройки проигрывателя, затем выберите раздел Другое и прокрутите вниз до раздела Идентификация; подробности см. в документации по Настройки проигрывателя iOS — идентификация). Когда Unity создает Player, он обновляет этот файл, а не заменяет его. Не вносите в него изменения, если в этом нет необходимости.
Файл /UnityFramework/Info.plist (доступ через bundleWithIdentifier:@»com.unity3d.framework» ) является частью UnityFramework. Вы можете хранить значения здесь, а не в файле /Info.plist mainBundle, чтобы быть уверенными, что вы сможете получить эти значения, если UnityFramework переместится в другое приложение.
Другие файлы
К ним относятся файл проекта Xcode (файл .xcodeproj) и ссылки на фреймворк, которые отображаются только в Навигаторе проектов.

Создание проекта Xcode с помощью xcodebuild
Когда вы используете аргументы командной строки для указания параметров сборки, они влияют на все цели проекта Xcode. Чтобы предотвратить это, некоторые параметры сборки имеют версии с суффиксом, которые вы можете использовать, чтобы указать, на какую цель влияют ваши параметры сборки. Это реализовано с помощью пользовательских настроек (суффикс *APP, используемый для целевого приложения, и суффикс *FRAMEWORK для целевого объекта платформы).
При сборке с помощью xcodebuild используйте версии с суффиксом для:
В зависимости от вашего пользовательского конвейера сборки вы можете расширить список, включив в него другие настройки.
Изменение проекта Xcode
Чтобы изменить сгенерированный проект Xcode, используйте Xcode.PBXProject.
Цели проекта
Начиная с Unity 2019.3, PBXProject.GetUnityTargetName и pbxProject->TargetGuidByName(«Unity-iPhone») устарели. Вместо этого вы можете использовать либо pbxProject->GetUnityFrameworkTargetGuid() , либо pbxProject->GetUnityMainTargetGuid() :
// Obsolete string targetGuid = proj.TargetGuidByName(«Unity-iPhone»); string targetGuid = proj.TargetGuidByName(PBXProject.GetUnityTargetName()); // Instead call one of these string targetGuid = proj.GetUnityFrameworkTargetGuid(); string targetGuid = proj.GetUnityMainTargetGuid();
Если вам необходимо поддерживать как старые, так и новые пути кода в вашем пакете или пользовательском постпроцессоре сборки, выполните следующие действия:
A Brief Anatomy of A Unity Project Folder
![]()
When a new project is created, Unity creates several folders as a part of the project. Over the years and versions of Unity, this default folder structure has changed somewhat, but it now generally contains the following folders:
Assets
This is the folder where all game resources are stored, including scripts, textures, sound, and custom editor scripts. The organization of the folder can vary greatly from one project to another and from one organization to another. There can be numerous subfolders in the Assets folder, depending on how the project is organized. For example, there may be a folder for scenes, one for scripts, one for audio, or one for sprites. There is no limit to how deep the organization can be.
As a best practice, subfolders in the Assets folder should be created within Unity and not the file system. Likewise, assets should be added to the folders in Unity. This is particularly important due to the way Unity constructs metadata for assets.
Unity reserves several special folder names under the asset folder. These folders are Editor, Editor Default Resources, Gizmos, Resources, Standard Assets, and Streaming Assets. Not every project will have all of these folders.
Assets/Editor — This folder is for custom editor scripts that extend the functionality of the Unity editor. These scripts will run in the editor but not in the project at runtime. Multiple Editor folders can exist in the Assets Folder. The execution of the editor scripts varies depending on where in the folder structure the editor file exists.
Assets/Editor Default Resources — This is where asset files used by Editor scripts are stored. There can only be one such folder and it must be placed in the Assets folder root. There can be subfolders in this folder.
Assets/Gizmos — Gizmos are graphics in the scene view which can help to visualize design details. This folder stores images used for gizmos. There can only be one folder and it must be placed in the Assets folder root. Gizmo examples are seen below with the red squares around them. The one on the left is the main camera’s position and rotation. The one on the right represents a light source. These two are Unity built in gizmos:
Assets/Resources — This folder stores resources so that they can be loaded on demand in a Unity project. There can be multiple resource folders. On demand loading is helpful for dynamically loading game objects that don’t have instances created by designers during design time. In other words, these resources may not have corresponding game objects placed in the scene at design time and are loaded dynamically at run time.
Assets/Standard Assets — This folder stores any standard asset packages that have been imported into a project. There can be only one standard assets folder. Standard assets are free assets maintained by Unity.
Assets/Streaming Assets — This folder is for assets that will remain in their original format and later be streamed into the Unity application, instead of directly incorporating them into the project’s build. An example would be a video file from the filesystem. There can only be 1 streaming assets folder in the project.
Library
Moving on from the Assets folder, the next folder is Library. This is a local cache used by Unity for imported assets. It can be deleted and will be regenerated by unity automatically. All that is needed to recreate the folder are source assets and .meta files. If this folder is deleted, Unity will reimport all assets and regenerate the folder the next time the project is opened in the editor. This folder should not be included in Version Control. These imported assets are used by Unity to save time when Unity is being run.
Of special note in the Library folder is the package cache folder. This contains information about all the packages installed with the current project. Though this can be regenerated by Unity like the other items in the Library folder, for archival purposes, it is important that this file not be deleted. This is because it may be helpful to be able to see what packages are included in the project without having to regenerate the cache, which would require opening the project in its appropriate editor version.
Packages
This folder contains the manifest file in JSON format used to maintain the dependencies link between packages. It also contains a file listing the individual packages installed with the project. These are used by the Unity Package Manager. The package manager was added in Unity 2018.1. Prior versions of Unity will not contain the package manager and the packages folder will not exist in those cases.
Project Settings
This folder contains all project settings. Everything that is setup in the project settings menu. It also includes editor version number and build settings and a slew of other settings used by Unity systems. Editor version number, as a standalone file, was not added until Unity 5. For any version before that, the editor version number can be found in the project settings file.