Luah - враппер для C# вокруг LuaJIT. Позволяет встраивать Lua скрипты в C# программы.
Исходники
https://bitbucket.org/kkolyan/luah
Особенности
Как использовать
Бинари LuaJIT не идут в комплекте. их можно скачать здесь или собрать из исходников, а затем положить lua51.dll (Windows) или liblua51.so (Linux) в директорию, из которой запускается ваша C# программа.
при работе в Unity Editor - в корень проекта (вне папки Assets), при запуске собранной Unity игры - в директорию вместе с запускаемым файлом
using Luah; public class HelloExample { public static void Main() { using ( LuaState state = Lua.luaL_newstate( )) { state.luaL_openlibs( ); state.luaL_loadstring_safe( "print('Hello!')"); state.lua_pcall_traceback( 0, 0); } } }
Больше примеров в тестах: https://bitbucket.org/kkolyan/luah/src/master/test/Tests.cs
Отладка
В Luah входят врапперы, позволяющие интерактивно просматривать Lua-стек и глобальные переменные при отладке C# кода (проверял только в Rider)
Планы
Использую сам, так что в данный момент активно дорабатываю. Сильно наращивать функциональность не планирую. Цель - простые и хорошо отлаженные биндинги в стиле оригинального Lua C API.
Чем это лучше этого?
https://github.com/yanghuan/CSharp.lua
Или просто враппер над lua51.dll?
с небольшими наворотами для удобства
В чём навороты заключаются?
позволяющие интерактивно просматривать Lua-стек при отладке C# кода
Да?
flint2
> Чем это лучше этого?
> https://github.com/y… an/CSharp.lua
Указанная вами библиотека решает совершенно иные задачи.
flint2
> В чём навороты заключаются?
На данный момент:
Указанная вами библиотека решает совершенно иные задачи.
Просто враппер над lua51.dll?
flint2
Да
(заменил слово фасад на враппер в описании на всякий случай)
kkolyan
Понял, спасибо.
Посмотрим. ))
flint2
> Просто враппер над lua51.dll?
Так, стоп. Если вы имеете в виду что моя либа отличается от указанной вами "наворотами", то нет - вы привели ссылку на транслятор C# в Lua. Т.е. совсем другое.
А моя либа - просто враппер, да.
kkolyan
А моя либа - просто враппер, да.
Потом я понял.
Просто у меня были зрительные ассоциации с:
Я занимался в это время тем, на что дал ссылку. Один в один картинка.
Мозги по инерции сработали. ))
Не сердись, я без всякого умысла. Подумал, что в тему...
kkolyan
А можно C# в Кор (https://gamedev.ru/projects/forum/?id=257379) прикрутить?
Хотелось бы на C# в Коре работать.
Может транспайлер(транслятор)?
flint2
> Не сердись, я без всякого умысла. Подумал, что в тему...
да ничего страшного) было интересно узнать что такое уже кто-то сделал. мало-ли пригодится.
qGrin
с помощью моей либы - нет, т.к. она делает ровно обратное. А вот по ссылке, которую принес flint2 (https://github.com/yanghuan/CSharp.lua) похоже как раз то, что вам нужно.
Имхо, если и транспайлить что-то в Lua (например для Кора), то лучше уж Kotlin, или хотя бы Java. Достоинства C# всетаки себя раскрывают сугубо в его собственном рантайме.
kkolyan
то лучше уж Kotlin, или хотя бы Java.
Солидарен, классика.
kkolyan
> Имхо, если и транспайлить что-то в Lua (например для Кора), то лучше уж Kotlin,
> или хотя бы Java. Достоинства C# всетаки себя раскрывают сугубо в его
> собственном рантайме.
С Java нет опыта (ну кроме паттернов от head first).
А вообще хочется от менее интуитивного и знакомого LUA перейти к чему то более знакомому типо C#.
qGrin
haxe транспайлится в lua. для интеграции с кором, наверняка потребуется написать клей, но в целом идея должна быть рабочей. в качестве примера есть интеграция с дефолдом.
Тема в архиве.