Используйте инструмент UnityYAMLMerge для объединения сценыСцена содержит окружение и меню вашей игры. . Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь и prefabТип ассета, позволяющий хранить GameObject вместе с компонентами и свойствами. Префаб действует как шаблон, из которого вы можете создавать новые экземпляры объектов на сцене. Подробнее
Просмотреть в файлах Словарь семантически правильным способом. Доступ к инструменту можно получить из командной строки, а также он доступен для сторонней системы управления версиямидля управления изменениями файлов. Вы можете использовать Unity в сочетании с наиболее распространенными инструментами контроля версий, включая Perforce, Git, Mercurial и PlasticSCM. Подробнее
См. в Словарь.
Настройка умного слияния в Unity
В настройках проекта контроля версий (меню: Правка > Настройки проекта > Контроль версий) при выборе сторонней версии в поле Mode, например, Perforce или PlasticSCM, отображается Smart Merge. В меню есть следующие опции:
- Выкл.: использовать только инструмент слияния по умолчанию, установленный в настройках, без интеллектуального слияния.
- Предварительное слияние: включение интеллектуального слияния, принятие чистых слияний. Нечистые слияния создадут предварительно слитые версии базовой, их и моей версий файла. Затем используйте их с инструментом слияния по умолчанию.
- Спросить: включить интеллектуальное слияние, но при возникновении конфликта показывать диалоговое окно, позволяющее пользователю разрешить его (настройка по умолчанию).
Настройка UnityYAMLMerge для использования со сторонними инструментами
Инструмент UnityYAMLMerge поставляется с редактором Unity; предполагая, что Unity установлена в стандартной папке, путь к UnityYAMLMerge будет таким:
C:\Program Files\Unity\Editor\Data\Tools\UnityYAMLMerge.exe
или
C:\Program Files (x86)\Unity\Editor\Data\Tools\UnityYAMLMerge.exe
…в Windows и
/Applications/Unity/Unity.app/Contents/Tools/UnityYAMLMerge
…в Mac OSX (для доступа к этой папке используйте команду Показать содержимое пакета в Finder).
UnityYAMLMerge поставляется с резервным файлом по умолчанию (он называется mergespecfile.txt, также находится в папке «Инструменты»), в котором указано, как следует поступать с неразрешенными конфликтами или неизвестными файлами. Это также позволяет вам использовать его в качестве основного инструмента слияния для систем контроля версий (таких как git), которые не выбирают инструменты слияния автоматически на основе расширений файлов. Наиболее распространенные инструменты уже перечислены по умолчанию в файле mergespecfile.txt, но вы можете отредактировать этот файл, чтобы добавить новые инструменты или изменить параметры.
Вы можете запустить UnityYAMLMerge как отдельный инструмент из командной строки (вы можете увидеть полные инструкции по использованию, запустив его без каких-либо аргументов). Инструкции по установке для распространенных систем контроля версий приведены ниже.
P4V
- Выберите «Настройки» > «Объединить».
- Выберите Другое приложение.
- Нажмите кнопку Добавить.
- В поле расширения введите
.unity
. - В поле Приложение введите путь к инструменту UnityYAMLMerge (см. выше).
- В поле "Аргументы" введите
merge -p %b %1 %2 %r
- Нажмите "Сохранить".
Затем выполните ту же процедуру, чтобы добавить расширение .prefab
.
Гит
Добавьте следующий текст в файл .git
или .gitconfig
:
[merge]
tool = unityyamlmerge
[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = '' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
Меркуриал
Добавьте следующий текст в файл .hgrc
:
[merge-patterns]
**.unity = unityyamlmerge
**.prefab = unityyamlmerge
[merge-tools]
unityyamlmerge.executable =
unityyamlmerge.args = merge -p --force $base $other $local $output
unityyamlmerge.checkprompt = True
unityyamlmerge.premerge = False
unityyamlmerge.binary = False
СВН
Добавьте в файл ~/.subversion/config
следующее:
[helpers]
merge-tool-cmd =
TortoiseGit
- Откройте «Настройки» > «Просмотр различий» > «Инструмент слияния» и нажмите кнопку Дополнительно.
- Во всплывающем окне введите
.unity
в поле расширения. - В поле Внешняя программа введите:
merge -p %base %theirs %mine %merged
Затем выполните ту же процедуру, чтобы добавить расширение .prefab
.
ПластикSCM
- Откройте «Настройки» > «Инструменты слияния» и нажмите кнопку Добавить.
- Выберите инструмент Внешнее слияние.
- Выберите Использовать с файлами, соответствующими следующему шаблону.
- Добавьте расширение
.unity
. - Введите команду:
merge -p "@basefile" "@sourcefile" "@destinationfile" "@output"
Затем выполните ту же процедуру, чтобы добавить расширение .prefab
.
Исходное дерево
- Выберите Инструменты > Параметры > Различия.
- Выберите Пользовательский в раскрывающемся списке инструментов объединения.
- Введите путь к UnityYAMLMerge в поле Команда слияния.
- Введите
merge -p $BASE $REMOTE $LOCAL $MERGED
в поле Аргументы.
Настройка файла mergerules.txt
Чтобы настроить объединение файлов в UnityYAMLMerge, настройте файл mergerules.txt. Это доступно в папке Editor/Data/Tools
вашей установки Unity.
Ниже приведены различные параметры конфигурации.
Массивы
Раздел конфигурации массивов сообщает UnityYAMLMerge, что указанный путь следует рассматривать как массив; либо как «набор» со значением ключа, либо как «простой» массив без значений ключа. По умолчанию для всех массивов используется гибридный режим и попытка сопоставления с некоторыми известными эвристиками.
— один из вариантов "установить" или "обычный" .
Пример (в соответствии с файлом слияний по умолчанию)
[arrays]
set *.GameObject.m_Component *.fileID
set *.Prefab.m_Modification.m_Modifications target.fileID target.guid propertyPath
plain *.MeshRenderer.m_Materials
plain *.Renderer.m_Materials
Исключения
В разделе конфигурации исключений указано, какие пути следует исключить из объединения. Если обе стороны были изменены, они рассматриваются как конфликт и отображаются для ввода пользователем.
– один из вариантов "включить", "исключить", "включить, есликонтаинс", "исключить, есликонтаинс"
Пример (в соответствии с файлом слияний по умолчанию)
[exclusions]
exclude *.MeshRenderer.m_Materials.*
exclude *.SpriteRenderer.m_Materials
exclude *.SpriteRenderer.m_Color
include *.ParticleSystem.InitialModule
exclude *.ParticleSystem.*
exclude *.ParticleSystem.InitialModule.*
#excludeDepend *.MonoBehaviour m_Script ^m_
excludeIfContains *.MonoBehaviour.* x y z
excludeIfContains *.MonoBehaviour.* r g b
Сравнения
В разделе сравнения учитываются незначительные различия между значениями с плавающей запятой, чтобы игнорировать настройки пользователя. Когда включено, сравнение с плавающей запятой выполняется относительно для учета относительной ошибки. Вы можете настроить сравнение следующими способами:
- "float" <значение с плавающей запятой для сравнения> (это устанавливает значение эпсилон по умолчанию, близкое к машинному эпсилону)
- "float" <плавающее значение для сравнения> <относительное значение сравнения и абсолютное отсечение>
- "float" <значение с плавающей запятой для сравнения> <относительное значение для сравнения> <отсечка абсолютного сравнения>
Относительное значение сравнения определяет эпсилон и то, как сравнение будет масштабироваться в зависимости от размера относительной ошибки с плавающей запятой. Отсечка абсолютного сравнения определяет, в какой момент плавающее сравнение переключается с абсолютного на относительное от нуля (на графике).
Примечание. Значения для сравнения должны быть между плавающей точкой эпсилон (~0,00000011921) и 1,0
Пример
[comparisons]
float *.Transform.m_LocalPosition.x 0.0000005
float *.Transform.m_LocalPosition.y 0.0000005
float *.Transform.m_LocalPosition.z 0.0000005
float *.Transform.m_LocalRotation.x 0.00005 0.001
float *.Transform.m_LocalRotation.y
float *.Transform.m_LocalRotation.z 0.00005 0.001
float *.Transform.m_LocalRotation.w