Директивы C# позволяют выборочно включать или исключать код из компиляции в зависимости от того, являются ли определенные символы сценариев определено или не определено.
Помимо встроенных символов сценариев (относящихся к платформе, версия редактора и другие различные сценарии системной среды), вы можете указать свои собственные символы сценариев либо с помощью редактора Пользовательский интерфейс(пользовательский интерфейс) Позволяет пользователю взаимодействовать с вашим приложением. Подробнее
См. в Словаре, с помощью скрипта или файла ресурса.
Установка символов скрипта через редактор
Чтобы установить или удалить директивы определения с помощью редактора, выберите Редактировать > Настройки проекта > Проигрыватель. Затем на панели Другие настройки прокрутите вниз до пункта Компиляция скриптов.
Вы можете добавлять и удалять свои собственные символы сценариев в список Символы определения сценариев, используя кнопки + и - и вводя имя ваших новых символов в поля. Когда вы нажимаете Применить, применяются ваши новые символы сценариев, и Unity перекомпилирует скриптыЧасть код, который позволяет вам создавать свои собственные Компоненты, запускать игровые события, изменять свойства Компонентов с течением времени и реагировать на ввод данных пользователем любым удобным для вас способом. Подробнее
Просмотрите Словарь в своем проекте, используя эти новые символы.
Кнопка Копировать определения копирует текущий набор пользовательских символов сценариев из списка в буфер обмена в виде строки значений, разделенных точкой с запятой.
Определение символов скрипта через скрипт
Для определения символов сценариев можно использовать следующий API:
- PlayerSettings.SetScriptingDefineSymbolsForGroup
- BuildPlayerOptions.extraScriptingDefines
- Build.Player.ScriptCompilationSettings-extraScriptingDefines
Установка символов скрипта для компиляции скрипта редактора
Если вам нужно определить символы сценариев с помощью сценариев в редакторе, чтобы изменения повлияли на ваши сценарии редактора, вы должны использовать PlayerSettings.SetScriptingDefineSymbolsForGroup. Однако следует отметить некоторые важные детали, касающиеся того, как это работает.
Важно: этот метод действует не сразу. Вызов этого метода из сценария не применяется немедленно и не перекомпилирует ваши сценарии. Чтобы ваши директивы вступили в силу на основе изменения символов сценариев, вы должны разрешить вернуть управление редактору, где он затем асинхронно перезагрузит сценарии и перекомпилирует их на основе ваших новых символов и директив, которые действуют на них. р>
Так, например, если вы используете этот метод в скрипте редактора, то немедленно вызовите BuildPipeline.BuildPlayer
в следующей строке того же скрипта, в этот момент Unity по-прежнему запускать сценарии редактора со старым набором символов сценариев, потому что они еще не были перекомпилированы с новыми символами. Это означает, что если у вас есть сценарии редактора, которые запускаются как часть исполнения BuildPlayer, они запускаются со старыми символами сценариев, и ваш проигрыватель может не строиться так, как вы ожидали.
Настройка символов сценариев в пакетном режиме
Упомянутый выше асинхронный характер компиляции Unity также важно понимать, если вы пишете сценарии редактора, которые будут выполняться в пакетном режиме в редакторе Unity на сервере непрерывной интеграции (CI). Это связано с тем, что когда редактор работает в пакетном режиме, он работает «без головы", поэтому нет цикл редактора, который заставит его перекомпилировать с новыми символами скрипта. По этой причине не следует использовать сценарии редактора для установки символов сценариев на сервере CI в пакетном режиме, поскольку сценарии не будут перекомпилированы и не будут применяться.
Вместо этого, если вам нужно определить определенные символы в редакторе, работающем в пакетном режиме, вы должны убедиться, что редактор запускается с правильными символами, определенными с самого начала. Это можно сделать, указав символы с помощью файла ресурса csc.rsp вместо использования сценариев редактора, как описано ниже.
Установка символов скрипта через файл ресурсов
Вы можете установить пользовательские символы сценариев с помощью текстового ресурса в своем проекте. Для этого вы должны добавить текстовый файл с именем csc.rsp
, определяющий пользовательские символы сценариев, в корень папки Assets вашего проекта. Этот специальный файл считывается Unity при запуске и применяется перед компиляцией любого кода.
Например, если вы включите одну строку -define:UNITY_DEBUG в файл csc.rsp, символ UNITY_DEBUG будет включен как глобально определенный символ сценария для сценариев C#, за исключением сценариев редактора. .
Каждый раз, когда вы вносите изменения в файлы .rsp, вам необходимо перекомпилировать их, чтобы они вступили в силу. Это можно сделать, обновив или повторно импортировав один файл сценария.
Примечание. Если вы хотите изменить только глобальные символы сценариев, добавьте их в Символы определения сценариев в редакторе с помощью Настройки игрокаНастройки, которые позволяют вам установить различные параметры игрока для окончательной игры, созданной Unity. Подробнее
См. в окне Словарь (как описано выше), так как это охватывает все компиляторы . Если вместо этого вы выберете файлы .rsp, вам потребуется предоставить по одному файлу для каждого используемого Unity компилятора.