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
Перерыв, кстати, помог уже через день я готов был снова браться за основную работу.




