(Документация на английском доступна)
Поддержка программирования Lua в C#
xLua добавляет возможность использования Lua-скриптов в средах C#, таких как Unity, .NET, Mono и т.д. Благодаря xLua эти Lua-скрипты могут легко взаимодействовать с C#.
## Инновации xLua
xLua демонстрирует значительные достижения в функциональности, производительности и удобстве использования. Наиболее характерные достижения в этих областях:
- Возможность замены реализации C# (методы, операторы, свойства, события и т.д.) на время выполнения Lua-реализацией;
- Отличная оптимизация сборщика мусора (GC), что позволяет передавать пользовательские типы данных (struct, enum) между Lua и C# без выделения памяти C#;
- Разработка без необходимости генерации кода в редакторе, что делает процесс легче;
- Дополнительные характеристики и поддержка платформ подробно описаны в документации xLua: функциональные возможности.
Установка
xLua можно установить в проект Unity простым способом.
- Скачайте выпуск из раздела Releases или скачайте код этого репозитория.
- Распакуйте скачанный архив с исходным кодом; вы увидите директорию Assets, которая должна совпадать с директорией Assets вашего проекта Unity. Сохраните эту структуру каталогов и переместите её содержимое в ваш проект Unity.
Обратите внимание, что директория Assets/Examples содержит примеры кода, которые следует удалить при использовании в продакшне.
Если вам требуется установка в другую директорию, обратитесь к часто задаваемым вопросам.
Документация
- (обязательно прочесть) Учебник XLua: учебник, содержащий примеры кода здесь.
- (обязательно прочесть) Настройка XLua: описание методов конфигурации XLua.
-
Часто задаваемые вопросы: здесь собраны все основные вопросы, большинство проблем новичков можно найти здесь.
-
Руководство по применению горячих исправлений: описание применения функции горячего исправления.
-
Добавление и удаление сторонних библиотек Lua с помощью XLua: как добавлять и удалять сторонние расширения Lua.
- API XLua
-
Инструкция по API: описание API.
## Быстрый старт
Полный пример требует всего 3 строки кода:
Установите xLua, создайте MonoBehaviour и переместите его в сцену. В метод Start добавьте следующий код:
```csharp
XLua.LuaEnv luaEnv = new XLua.LuaEnv();
luaEnv.DoString("CS(UnityEngine.Debug.Log('hello world'))");
luaEnv.Dispose();
```
1. Параметр DoString типа string может содержать любую легальную Lua-кодировку; в данном примере вызывается C#-метод UnityEngine.Debug.Log для вывода сообщения.
2. Каждый экземпляр LuaEnv представляет собой Lua-виртуальную машину. Из соображений затрат рекомендуется использовать глобально уникальный экземпляр. Активное вызов Lua из C# также простое:
* Объявление
```csharp
[XLua.CSharpCallLua]
public delegate double LuaMax(double a, double b);
```
* Привязка
```csharp
var max = luaEnv.Global.GetInPath("math.max");
```
* Вызов
```csharp
Debug.Log("max:" + max(32, 12));
```
Обратите внимание, что повторное использование `luaEnv.Global.GetInPath` не требуется.
## Живой патчинг
Кроме использования Lua для написания скриптов в Unity, вы можете использовать Lua для реализации "живого патчинга".
* Минимальное вторжение, старые проекты могут использовать это без изменения существующего кода.
* Небольшое влияние во время выполнения, отсутствие патча делает программу практически такой же, как была до него.
* При возникновении проблем можно исправить их с помощью Lua-патча, тогда будет выполняться логика Lua-кода;
Подробнее см. руководство: [Документация xLua: живой патчинг](Assets/XLua/Doc/hotfix.md)
## Дополнительные примеры
* [01_Helloworld](Assets/XLua/Examples/01_Helloworld/): быстрый старт.
* [02_U3DScripting](Assets/XLua/Examples/02_U3DScripting/): демонстрация того, как использовать Lua для создания MonoBehaviors.
* [03_UIEvent](Assets/XLua/Examples/03_UIEvent/): демонстрация того, как использовать Lua для создания логики UI.
* [04_LuaObjectOriented](Assets/XLua/Examples/04_LuaObjectOriented/): демонстрация совместимости Lua-ориентированного объекта с C#.
* [05_NoGc](Assets/XLua/Examples/05_NoGc/): демонстрация способов избежания сборки мусора для значимых типов данных.
* [06_Coroutine](Assets/XLua/Examples/06_Coroutine/): демонстрация работы Lua-корутин с корутинами Unity.
* [07_AsyncTest](Assets/XLua/Examples/07_AsyncTest/): демонстрация использования Lua-корутин для преобразования асинхронной логики в синхронную.
* [08_Hotfix](Assets/XLua/Examples/08_Hotfix/): пример использования горячего исправления (требуется включение возможности горячего исправления, как это сделать см. [документацию xLua: горячее исправление](Assets/XLua/Doc/hotfix.md)).
* [09_GenericMethod](Assets/XLua/Examples/09_GenericMethod/): демонстрация поддержки универсальных методов.
* [10_SignatureLoader](Assets/XLua/Examples/10_SignatureLoader/): как читать цифровую подпись lua-скриптов, подробнее см. [документация по цифровой подписи](Assets/XLua/Doc/signature.md).
* [11_RawObject](Assets/XLua/Examples/11_RawObject/): когда аргумент C# является object, как передать lua число в виде boxing int.
* [12_ReImplementInLua](Assets/XLua/Examples/12_ReImplementInLua/): пример преобразования сложных значений в реализацию на Lua.
* [14_HotfixAsyncAwait](Assets/XLua/Examples/14_HotfixAsyncAwait/): пример преобразования асинхронных функций и ключевых слов await в реализацию на Lua.
## Поддержка
Один канал: 612705778 (полностью заполнен)
Второй канал: 703073338 (полностью заполнен)
Третий канал: 811246782
Вопрос при входе: Как найти ответ на вопрос?
Ответ: FAQ
Обращайтесь к этому ответу, более 90% вопросов можно найти в [FAQ](Assets/XLua/Doc/faq.md). Не флудьте с этими вопросами в группах.
Опубликовать ( 0 )