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

OSCHINA-MIRROR/mirrors-xlua

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

Лицензия Выпуск Добро пожаловать с Pull Request'ами Статус сборки

Lua-решение программирования для C#

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

Превосходные возможности xLua

xLua имеет множество прорывов в функциональности, производительности и удобстве использования. Самыми значительными особенностями являются:

  • Возможность использовать реализации C# (методы, операторы, свойства, события и т.д.) в Lua;
  • Отличная оптимизация сборщика мусора (GC), специализированной структуры данных, отсутствие выделения памяти C# при передаче перечисляемых объектов между C# и Lua;
  • Лёгкая разработка без необходимости генерировать код в режиме редактирования проекта;

Установка

Распакуйте ZIP-пакет, и вы увидите директорию Assets, которая соответствует директории Assets вашего проекта Unity. Сохраните структуру директорий в вашем проекте Unity.

Если вы хотите установить его в другую директорию, обратитесь к часто задаваемым вопросам.## Документация

Быстрый старт

Полный пример требует всего лишь трёх строк кода: Установите xLua, создайте MonoBehaviour сценарий, добавьте следующий код в метод Start:

XLua.LuaEnv luaenv = new XLua.LuaEnv();
luaenv.DoString("CS.UnityEngine.Debug.Log('Привет мир')");
luaenv.Dispose();
  1. Параметр DoString — это строка, в которую можно ввести любой допустимый Lua-код. В этом примере Lua вызывает метод UnityEngine.Debug.Log из C#, чтобы вывести сообщение.

  2. Экземпляр LuaEnv соответствует Lua-виртуальной машине. Из-за дополнительных затрат рекомендуется использовать одну глобально уникальную Lua-виртуальную машину.Активное использование C# для вызова Lua довольно простое. Например, рекомендуемый способ вызова системной функции Lua:

  • Объявление
[XLua.CSharpCallLua]
public delegate double LuaMax(double a, double b);
  • Привязка
var max = luaenv.Global.GetInPath<LuaMax>("math.max");
  • Вызов
Debug.Log("Максимальное значение: " + max(32, 12));

Рекомендуется привязывать один раз и переиспользовать. Если код генерируется, то при вызове max не создаются новые объекты сборщиком мусора.

Лечебные изменения (Hotfix)

  • Это имеет меньшее вторжение, и может использоваться без модификаций старого проекта.
  • Оно имеет незначительное влияние на производительность, что почти равно оригинальному программному обеспечению без использования лечебных изменений.
  • При возникновении проблем, можно исправить с помощью Lua. Тогда логика Lua будет включена.Здесь находится руководство по использованию:

Дополнительные примеры

  • 01_Helloworld: Быстрый старт
  • 02_U3DScripting: Этот пример показывает, как использовать Mono для написания MonoBehaviour.
  • 03_UIEvent: Этот пример показывает, как использовать Lua для написания логики UI.
  • 04_LuaObjectOriented: Этот пример показывает взаимодействие между объектно-ориентированным программированием Lua и C#.
  • 05_NoGc: Этот пример показывает, как избежать создания новых объектов сборщиком мусора для значений типа.
  • 06_Coroutine: Этот пример показывает работу корутин Lua с корутинами Unity.
  • 07_AsyncTest: Этот пример показывает, как использовать корутины Lua для синхронизации асинхронной логики.
  • 08_Hotfix: Эти примеры показывают применение лечебных изменений (пожалуйста, активируйте функцию лечебных изменений. Подробнее см. Руководство).
  • 09_GenericMethod: Этот пример демонстрирует поддержку универсальных методов.
  • 10_SignatureLoader: Этот пример показывает, как читать скрипт Lua с цифровой подписью. Подробнее см. документацию по цифровой подписи.* 11_RawObject: Этот пример демонстрирует, как указывать передачу Lua числа в виде целого числа после boxing, когда параметр C# является объектом.
    • 12_ReImplementInLua: Это показывает, как преобразовывать сложные значения типов данных в реализации на Lua.
    • 14_HotfixAsyncAwait: Это показывает, как изменять асинхронные функции и ключевое слово await в реализациях на Lua.

Техническая поддержка

Группа QQ 1: 612705778 (может быть заполнена) Группа QQ 2: 703073338 Группа QQ 3: 811246782 Проверка ответов: При возникновении проблемы, пожалуйста, сначала прочитайте часто задаваемые вопросы (FAQs).

Опубликовать ( 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