1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-xlua

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 10 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 07.03.2025 16:29 b8ba36d

Лицензия Релиз Добро пожаловать в PR Статус сборки (Документация на английском доступна)

Поддержка программирования Lua в C#

xLua добавляет возможность использования Lua-скриптов в средах C#, таких как Unity, .NET, Mono и т.д. Благодаря xLua эти Lua-скрипты могут легко взаимодействовать с C#.


## Инновации xLua xLua демонстрирует значительные достижения в функциональности, производительности и удобстве использования. Наиболее характерные достижения в этих областях:
  • Возможность замены реализации C# (методы, операторы, свойства, события и т.д.) на время выполнения Lua-реализацией;
  • Отличная оптимизация сборщика мусора (GC), что позволяет передавать пользовательские типы данных (struct, enum) между Lua и C# без выделения памяти C#;
  • Разработка без необходимости генерации кода в редакторе, что делает процесс легче;
  • Дополнительные характеристики и поддержка платформ подробно описаны в документации xLua: функциональные возможности.

Установка

xLua можно установить в проект Unity простым способом.

  1. Скачайте выпуск из раздела Releases или скачайте код этого репозитория.
  2. Распакуйте скачанный архив с исходным кодом; вы увидите директорию 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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-xlua.git
git@api.gitlife.ru:oschina-mirror/mirrors-xlua.git
oschina-mirror
mirrors-xlua
mirrors-xlua
master