Unity / Скрипты / Премиум / Инструменты

Roslyn C# - Runtime Compiler 2.0

Просмотров: 5
Добавил: RedAmmo
Добавлено: 18-06-2026, 19:23
Unity Version
Unity 6
Built-in
Совместим
URP
Не совместим
HDRP
Не совместим

ПРИМЕЧАНИЕ - По умолчанию требуется настольная платформа с серверной частью Mono, но поддержка других платформ и IL2CPP возможна с ограничениями при использовании бесплатного дополнения в качестве описано здесь .

Roslyn C# - это полнофункциональный компилятор и runtime API для компиляции, загрузки и выполнения внешнего исходного кода на C# и управляемых сборок (.dll) как части вашей игры. Ресурс нацелен на упрощение процесса компиляции и загрузки кода, предоставляя простые, но мощные API для компиляции из исходных строк, файлов, синтаксических деревьев, проектов C# и папок. Кроме того, для всех API компиляции предусмотрены асинхронные варианты, так что ваша игра может продолжать работать, пока компиляция происходит в фоновом режиме.

Защита кода

Одна из основных проблем, связанных с загрузкой внешнего кода (например, в случае моддинга), заключается в том, что код может быть потенциально вредоносным, если он был получен из ненадежного источника. В Roslyn C# на этот счет предусмотрена функция защиты кода.

Во всем коде, загружаемом через Roslyn C#, наша собственная система защиты кода выполняет статический анализ байт-кода IL для поиска потенциально опасных функций. Создавая пользовательские правила проверки кода, Можно обнаруживать и предотвращать загрузку сборки, если она содержит ссылки на недопустимые сборки, пространства имен, типы или использует небезопасные контексты или вызовы платформы. Система будет сообщать о каждом появлении ссылки, которая считается незаконной, и выводить подробный отчет, чтобы помочь пользователю устранить проблемы с безопасностью, если они возникнут.

Безопасность исполнения

Новая функция для версии 2.0 ресурса!

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

В версии 2.0 ресурса мы решили эту проблему, внедрив проверки безопасности во время выполнения в скомпилированный код, который будет генерировать исключение, если цикл выполнялся в течение X промежутков времени или X итераций. Это означает, что игра может корректно восстановиться, если будет запущен бесконечный цикл, и игра будет зависать всего на пару секунд, прежде чем продолжиться, а не завершится сбоем приложения.

Особенности

  • Компилируйте и загружайте скрипты на C# во время выполнения
  • Используйте новейшие возможности языка C#
  • Быстрое выполнение - после компиляции внешний код будет выполняться так же быстро, как и игровой код.
  • Простой и понятный в использовании API для отображения сборки, типов и экземпляров
  • Автоматическое построение типа с использованием правильного метода (AddComponent, CreateInstance, new)
  • Проверка безопасности кода означает, что небезопасный код может быть идентифицирован и удален
  • Code security генерирует подробный отчет при сбое, содержащий информацию об используемых недопустимых типах и каждом случае использования во внешнем коде
  • Безопасность выполнения гарантирует, что загруженный код не приведет к сбою основной игры из-за длинных или бесконечных циклов
  • Полностью прокомментированный исходный код на C# включен
  • Полная документация по API для быстрого и удобного ознакомления

Новинка для версии 2.0

Ознакомьтесь с тем, что нового появилось в версии 2.0 ресурса, на форуме.

Комментарии (0)
Минимальная длина комментария - 50 знаков. Комментарии модерируются

Похожие файлы: