Published using Google Docs
Именование файлов в Unity 3D
Updated automatically every 5 minutes

Именование файлов в Unity 3D

22 сентября 2022
Валерия Пудова

Аннотация: 

Документ не является соглашением по именованию файлов, это лишь рекомендации, которые вы можете использовать для создания своего соглашения.

В документе рассмотрены основные техники именования файлов в Unity 3D. Однако, эти принципы можно использовать и с другими игровыми движками.

Этот документ является частью серии статей по структурированию игрового проекта в Unity 3D.

Tags:

#unity #unity3d #namingconvention #gamedev #gamedeveloper #gamedevelopment #indiedev #indiegaming #indiegamedev 

История обновлений:

22/09/2022 [R01] Первая опубликованная версия


Содержание

Введение

Префикс имени файла

Префикс по типу файла (Type)

Префикс по назначению файла (Target)

Префикс для сортировки  файлов (Sequence)

Префикс для временных файлов (Temp)

Суффикс имени файла

Суффикс по назначению файла (Target)

Суффикс для версии файла  (Version)

Суффикс для сортировки файлов  (Sequence)

Суффикс для подвида файла (Aspect)

Суффикс по содержанию файла  (Content)

Комбинирование суффиксов

Зарезервированные правила Unity

Правила именования

Выводы

Ссылки


Введение

Именование файлов исходного кода описано в документе Microsoft Coding Conventions C#, тогда как в этом документе предлагается рассмотреть варианты именования файлов для медиаконтента.

Существует два стиля именования файлов (таблица 1). Необходимо выбрать один из них и следовать ему от начала и до конца проекта.

Таблица 1 Два основных стиля именования файлов

1

PascalCase 

Записывать слова без пробелов и отделить слова заглавной буквой. Для дополнительного разделения можно использовать символ подчеркивания:  

MagneticRifle
MagneticRifle_Broken

Использовать только заглавные для префиксов и суффиксов:

SM_RailwayStation
RailwayStation_EM

2

lower-case

Использовать символы нижнего регистра для имен, префиксов и суффиксов. Вместо пробелов использовать знак подчеркивания.

magnetic_rifle
sm_railway_station
railway_station_em

Альтернативно, вместо пробелов использовать дефис.

magnetic-rifle
sm-railway-station
railway-station-em

Вариант PascalCase  наиболее распространен среди Unity разработчиков, так как вытекает из C# соглашения[1]. Вариант с использованием lower-case может быть в приоритете, если используется собственная система управления и стриминга ассетов — так как это предотвратит любые ошибки, связанные с регистром ввода.

В обоих случаях необходимо использовать только латинский алфавит, цифры и некоторые символы. Выше говорилось о подчеркивании и дефисе, но в Unity используется символ @ для именования анимационных файлов.

При этом, не следует применять выбранный         стиль на сторонние ассеты. Эти ассеты стоит оставить без изменений структуры файлов, а если вносить изменения, то лишь косметические. Так как в будущем, возможно, придется обновлять эти файлы новой версией ассета и вы просто упростите себе работу.

Использование "пробелов" приводит к ошибкам, на поиск и устранение которых потребуется много времени.


Префикс имени файла

Некоторые разработчики предлагают использовать специальный префикс в имени файла. Такой префикс может быть использован разными способами, ниже рассмотрим варианты. Особенность префикса в том, что из-за него файлы будут сортироваться так, что все файлы с одним префиксом будут расположены рядом. Это пожалуй, самый важный результат использования префикса.

Префикс, в целом, ухудшает читаемость остальной части имени файла, поэтому пользоваться этим инструментом необходимо с осторожностью. И если использовать, то в каждом файле — это позволит команде натренировать способность читать имя файла с префиксом.

Префикс по типу файла (Type)

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

SM_   Static Mesh
SK_   Skeletalmesh
P_    Prefab
PS_   Particle System
M_    Material
PM_   Physical Material
T_    Texture
A_    Audio Clip
AM_   Audio Mixer
S_    Scene
SP_   Sprite
F_    Font
SH_   Shader

Префикс по назначению файла (Target)

Используется у некоторых файлов, чтобы обозначить их назначение (а не тип, как выше). Это может быть полезно для prefabs и assets, для того чтобы сделать имя ресурса более информативным.

В качестве примера, если применять для сцен:

SC_FishingVillage     Любая сцена, которую можно загрузить и запустить

SA_FishingVillage     Сцена загружается в аддитивном режиме

TST_FishingVillage    Тестовая сцена

TSA_FishingVillage    Тестовая аддитивно загружаемая сцена

Префикс для сортировки  файлов (Sequence)

Цифровой префикс используется для ресурсов у которых разные имена, но определенный порядок использования. Использование таких префиксов полезно при хранении аудио – для сцен диалогов со множеством разных персонажей для того, чтобы упорядочивать очередь диалога.  Желательно использовать незначащие нули в количестве достаточном для роста числа вариантов, чаще всего двузначное число.

01_BootScene
02_SandyBeachScene
03_OldFactoryScene

Учитывая особенность этого префикса и редкость его использования, не стоит использовать другой префикс совместно с этим.

Префикс для временных файлов (Temp)

Любые временные папки или файлы могут быть отмечены двойным подчеркиванием (или дефисом, в зависимости от вашего стиля именования) в начале имени файла. Использование двойного символа позволяет проще искать такие файлы по запросу[4].

__RailwayStationScene

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


Суффикс имени файла

Суффикс лишь незначительно  влияет на сортировку и поэтому вне всякого сомнения очень удобный инструмент. Рассмотрим некоторые примеры.

Суффикс по назначению файла (Target)

Использование суффикса позволяет сообщить разработчику о том, какое назначение у ресурса, иными словами, немного больше сообщить о его содержимом. Например:

BootScene_1P    Для однопользовательской версии игры
BootScene_2P    Для версии игры на двух игроков
BootScene
_ADD   Аддитивно загружаемая сцена

Суффикс для версии файла  (Version)

Не смотря на то, что версионирование происходит с помощью VCS бывают случаи когда на определенном этапе необходимо в одной сцене видеть все версии одного объекта. В этом случае можно использовать ручное версионирование с помощью этого метода. Для этого добавьте номер версии в конце имени файла. Желательно использовать незначащие нули в количестве достаточном для роста числа вариантов, чаще всего двузначное число.

RedStone_V01  Версия 1

RedStone_V02  Версия 2

RedStone_V03  Версия 3

Использовать в имени файла слова означающего версию не целесообразно. В качестве примера: StoneFinal или StoneBetter. Используйте только цифровые номера версий. Так как в разработке игр редко можно предсказать то, является ли ресурс финальным.

Суффикс для сортировки файлов  (Sequence)

Желательно не использовать нумерацию для по сути разных объектов. Например вместо Bird_0, Bird_1, Bird_2 лучше использовать Flamingo, Eagle, Swallow. Все же бывают случаи, когда все объекты по сути одно и тоже и отличаются лишь незначительно. Этот метод чаще всего используется для деталей и текстур.

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

RedStone_00  Вариант 0

RedStone_01  Вариант 1

RedStone_02  Вариант 2

Суффикс для подвида файла (Aspect)

Иногда лучше вместо числового суффикса варианта файла использовать слово.

Суффикс по содержанию файла  (Content)

Для того чтобы имя файла сообщало немного больше о содержимом файла, можно добавлять суффикс к имени файла. Ниже предлагается перечень суффиксов для текстур.

_RGB   Albedo
_A     Opacity (Alpha)
_BC    Albedo (Base Color)
_BC_A  Albedo + Opacity (Alpha)
_R     Roughness (Smoothness)(Glossnes)
_MT    Metallic
_MT_R  Metallic + Roughness
_SP    Specular
_SP_R  Specular + Roughness
_EM    Emission
_N     Normal
_DP    Displacement
_AO    Ambient Occlusion
_H     Height Map
_FM    Flow Map
_L     Light Map (fake)
_M     Mask

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

Комбинирование суффиксов

Порядковый суффикс и суффикс версии может быть использован с другим и должен быть предпоследним в имени файла. Формат имени выглядит так:

Версия файла не располагается в конце, так как суффикс «по содержимому» имеет более высокое значение и должен быть расположен в самом конце имени. В качестве примера, два варианта текстуры травы и один вариант текстуры неба:

Grass_00_V01_RGB

Grass_00_V01_A
Grass_01_V02_RGB
Grass_01_V02_A

Sky_Top_V01_RGB
Sky_Top_V01_A

Sky_North_V01_RGB
Sky_North_V01_A

Смешивание нескольких суффиксов ухудшает читаемость и запоминаемость имен файлов. Разумно минимизировать число суффиксов в одном имени, например, не использовать более трех.

Зарезервированные правила Unity

Редактор Unity полностью игнорирует файлы и папки которые:


Правила именования

Именование объектов кажется простым и очевидным, но это не совсем так. Необходимо тщательно подбирать наиболее точное и грамматически корректное описание объекта в имени файла.

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


Выводы

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


Ссылки