Все материалы на сайте — ассеты, 3D-модели, логотипы и другие объекты — предоставлены исключительно в ознакомительных и учебных целях. У этих материалов есть правообладатели, которые, возможно, не давали согласия на работу со своими произведениями в рамках данного ресурса.
Roslyn C# - Runtime Compiler 2.0
ПРИМЕЧАНИЕ - По умолчанию требуется настольная платформа с серверной частью 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 ресурса, на форуме.
