Math experiments. Динамическая компиляция.
Здравствуйте, недавно я отвлёкся от основной разработки (т.к. устал) и создал приложение под андроид, иллюстрирующее написанные функции.
Вроде, задачка простая и покажется не интересной, но для написания функций используется C#. Т.е. речь идёт о динамической компиляции.
Сначала я использовал стандартную библиотеку, вот пример. Но
Поскольку приложения на Android требуют генерации типов прокси Java во время процесса сборки, невозможно создать весь код во время выполнения.
Затем мне подсказали использовать Mono CSharp Evaluator, что я и сделал. Эта библиотека позволяет динамически компилировать код на андроид-устроистве.
Сначала её необходимо скачать. Для этого я использовал VS nugets:
В Unity, чтобы использовать библиотеку, её необходимо поместить в проект Asset/Plugins. Поэтому просто ищем путь установки нагета (он должен быть в рядом с папкой Asset, если вы скачивали, открыв свой Unity проект в VS) и перемещаем .dll файл в свой проект.
Дальше всё просто, вот документация. Пример моего кода:
Math experiments. Динамическая компиляция.
Здесь мне необходимо получить функцию, которая будет рисовать график.
input - код, который ввёл пользователь.
Само приложение:
Т.к. моей основной задачей было сделать приложение, выполняющее определённые функции и ничего больше, UI мягко говоря - говно. Развивать приложение в планы не входит, создано для моей личной забавы и получения опыта.
Parse (не относится к теме).
Также хочу отметить, что если явно не задать формат при парсе строки в float, то на разных устройствах правильный формат может быть своим. Например:
Т.е., допустим, без явного форматирования на андроиде будет ругаться на "0,1", а в Unity на "0.1".
PS: В общем само приложение. Оно бесплатное, без рекламы, просто так.
Как писал вначале, я делаю игру под андроид, она будет необычная и я бы сказал объективно хорошая, так что предвкушайте :D
Перерыв, кстати, помог уже через день я готов был снова браться за основную работу.





Лига Разработчиков Видеоигр
10K постов23.4K подписчика
Правила сообщества
ОБЩИЕ ПРАВИЛА:
- Уважайте чужой труд и используйте конструктивную критику
- Не занимайтесь саморекламой, пишите качественные и интересные посты
- Никакой политики
СТОИТ ПУБЛИКОВАТЬ:
- Посты о Вашей игре с историей её разработки и описанием полученного опыта
- Обучающие материалы, туториалы
- Интервью с опытными разработчиками
- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе
НЕ СТОИТ ПУБЛИКОВАТЬ:
- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры
- Посты, единственная цель которых - набор команды для разработки игры
- Посты, не относящиеся к тематике сообщества
Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.
ЗАПРЕЩЕНО:
- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции
- Выдавать чужой труд за свой
Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.
О РАЗМЕЩЕНИИ ССЫЛОК:
Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:
- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества
- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз
- Cсылка размещается в формате: "Страница игры в Steam: URL"