Настраиваемые символы скриптов
В дополнение к встроенным символам сценариевв Unity, вы можете определить свои собственные пользовательские символы скриптов. Где вы определяете пользовательские символы скриптов определяет область, в которой они применяются. Вы можете определить пользовательские символы в следующих местах:
- Ан файл актива, для символов, которые применяются ко всем редакторам и проигрывателям в проекте, независимо от активного построить профиль.
- Настройки игрока, для символов, которые применяются ко всему редактору и коду игрока, когда данная платформа или один из ее профилей сборки активны.
- Профиль сборки Профиль сборкидля символов, которые применяются ко всему коду Редактора и Проигрывателя, когда активен данный профиль сборки.
- Из кода, для символов, которые применяются для активной платформы или для отдельных сборок Игрока, в зависимости от используемого API.
Настраиваемые символы для всего проекта
Вы можете определить пользовательские символы скриптов, которые применяются ко всему проекту с помощью файл ответа ассеты следующим образом:
- Назовите файл
csc.rspи поместите его в корневую папку проекта Ассеты. - Определите символы скриптов в строках, начинающихся с
-define:, за которыми следует один или несколько символов скриптов, разделенных точкой с запятой.
Unity читает этот файл при запуске и применяет его перед компиляцией кода. Например, если вы включите одну строку -define:UNITY_DEBUG;UNITY_TEST в файл csc.rsp, символы UNITY_DEBUG и UNITY_TEST будут включены в качестве глобальных определенных символов скриптов для всех скриптов C# в проекте.
Примечание: Изменения в файлах .rsp не вступают в силу, пока Unity не перекомпилирует скрипты. Вы можете вызвать перекомпиляцию, обновив или реимпортировав один файл скрипта.
Пользовательские символы для платформы
Настраиваемые символы скриптов, специфичные для платформы, можно определить следующим образом:
- Откройте Настройки плеера.
- Перейдите в список Скрипты Определение символов в разделе Другие настройки > Компиляция сценариев.
- Добавьте новые символы скриптов в список, выбрав кнопки + и введя имя символа в текстовое поле. Удалите существующие элементы списка с помощью кнопки -.
- Когда вы закончите редактирование списка, выберите Применить, чтобы применить изменения. Unity перекомпилирует скрипты в вашем проекте с использованием новых символов.
Примечание: кнопка Copy Defines копирует текущий набор пользовательских символов компиляции скриптов из списка в буфер обмена в виде строки значений, разделённых точками с запятой.
Настраиваемые символы для профиля сборки
Настраиваемые символы скриптов для профиля построения можно определить следующим образом:
- Выберите профиль сборки, для которого вы хотите определить символы, в окне Профили сборки.
- Выберите Добавить настройки > Сценарий определяет. Список определений скрипта появится в развернутом меню Сценарий определяет.
- Добавьте новые символы в список, нажав кнопки + и введя имя символа в текстовое поле. Удалите существующие элементы списка, нажав кнопки -. Изменения в списке сохраняются и применяются автоматически.
Примечание: Вы можете запустить редактор с помощью -activeBuildProfile аргумент командной строки сделать указанный профиль сборки и его пользовательские символы скриптов применимыми с момента запуска.
Пользовательские символы, определенные из кода
Для определения символов скриптов можно использовать следующие APIs:
PlayerSettings.SetScriptingDefineSymbolsBuildPlayerOptions.extraScriptingDefinesBuild.Player.ScriptCompilationSettings-extraScriptingDefines
BuildPlayerOptions.extraScriptingDefines и Build.Player.ScriptCompilationSettings-extraScriptDefines применимы только к сборкам Player, поэтому при определении символов скриптов, применимых к скриптам Editor, используйте PlayerSettings.SetScriptingDefineSymbols. Это кодовый эквивалент настройки символов скриптов для конкретной платформы в параметрах Player.
Важно: Символы, созданные из кода с SetScriptingDefineSymbols, не вступают в силу, пока Редактор не вернет контроль и не перекомпилирует ваши скрипты. Например, если вы создаете скриптовые символы с SetScriptingDefineSymbols в скрипты Редактора, а затем вызываете BuildPipeline.BuildPlayer на следующей строке, новые символы, созданные в предыдущей строке, еще не вступят в силу. В этом случае любой код Редактора, который запускается как часть исполнения BuildPlayer, запускается без новых символов, и Проигрыватель может не компилироваться так, как предполагалось.
Пользовательские символы в пакетном режиме
Когда Редактор запускается в пакетном режиме, нет механизма для запуска перекомпиляции скриптов. Если вам нужны определенные символы для определения в Редакторе, работающем в пакетном режиме, они должны быть на месте со запуска с помощью csc.rsp asset file.
Наследование символа скрипта
Если вы определили пользовательские символы скриптов в нескольких местах, Unity суммирует все символы, применимые к текущей конфигурации сборки. Символы наследуются из каждой области, а не перезаписываются, следующим образом: Project общие символы (из csc.rsp) + символы для конкретной платформы (из параметров проигрывателя) + символы профиля сборки (из данных сборки). Символы платформы и профиля сборки включаются только в том случае, если они соответствуют активному профилю сборки.
Например, предположим, что в вашем проекте есть следующие пользовательские символы скриптов, определенные в следующих расположениях:
| Местоположение | Символы, определенные |
|---|---|
csc.rsp |
SYMBOL_A |
| Windows Настройки Игрока | SYMBOL_B |
| WindowsBuildProfile1 | SYMBOL_C |
| WindowsBuildProfile2 | SYMBOL_D |
В этой примерной конфигурации в следующей таблице показано, какие символы активны для кода редактора и проигрывателя, когда активны различные профили сборки:
| Активный профиль сборки | Активные символы |
|---|---|
| Android | SYMBOL_A |
| Windows | SYMBOL_A, SYMBOL_B |
| WindowsBuildProfile1 | SYMBOL_A, SYMBOL_B, SYMBOL_C |
| WindowsBuildProfile2 | SYMBOL_A, SYMBOL_B, SYMBOL_D |
Вы можете проверить это поведение с помощью директив #if в вашем коде. Дополнительные сведения см. в Тестирование условной компиляции.