понедельник, 1 июля 2019 г.

FungusLua. Модуль Fungus Lua

Модуль Fungus Lua предоставляет удобные функции для работы с Lua, Unity и Fungus. Он находится в FungusLua/Resources/Lua/Fungus.txt и загружается автоматически при использовании компонента Lua Script.

На этой странице мы рассмотрим некоторые из общих функций в модуле, другие основные функции описаны в других частях документации.

Осмотр объектов Lua


Вы можете использовать встроенную функцию Lua print (), чтобы получить базовое описание любого объекта, напечатанного на консоли. Если вы хотите получить более подробное описание объекта, используйте inspect ().

-- Prints a short description of object v
print(v)
-- Prints a summary of object v in a human readable format.
inspect(v)

Запуск сопрограмм Unity


При привязке к компоненту C# с использованием Lua Bindings вы можете получить доступ к любому public методу в классе. Если метод возвращает IEnumerator, то этот метод может быть выполнен как  Unity coroutine, которая является мощным способом запуска асинхронного кода.

Функция runwait () позволяет вам вызывать метод сопрограммы C# из Lua, который может завершить свою работу несколькими кадрами, а затем продолжить работу с остальной частью кода Lua после завершения выполнения метода C#. Так работает, например, функция say ().

Это список доступных функций для ожидания и работы с сопрограммами.

-- Waits for a number of seconds, then continue execution of Lua script
wait(duration)
-- Waits until the Lua function provided returns true, or the timeout expires.
-- Returns true if the function succeeded, or false if the timeout expired
waitfor(fn, timeoutduration)
-- Run a C# coroutine and continue execution of Lua script
run(co)
-- Run a C# coroutine, wait until it completes, then continue execution of Lua script
runwait(co)

Globals vs Table mode


Модуль Fungus может использоваться в трех режимах, управляемых опцией Fungus Module в компоненте LuaUtils.
  1. Use Global Variables: все функции модуля отображаются на глобальные функции. Это обеспечивает удобный доступ, но при этом существует риск того, что вы можете случайно объявить переменную с тем же именем, что и у функции модуля Fungus.
  2. Use Fungus Variable: все функции модуля доступны через глобальную таблицу, называемую «fungus». Это дает определенную степень безопасности пространства имен за счет большего набора текста.
  3. No Fungus Module: модуль «Fungus» не будет зарегистрирован. Используется, если вы не хотите использовать модуль Fungus.

Опции 1 и 2 функционально эквивалентны, это просто вопрос личных предпочтений, которые вы хотите использовать.

-- sub is a function in the %Fungus module, mapped to a global variable
-- Use Global Variables
sub('a string')
-- Use Fungus Variable
fungus.sub('a string')

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.