- О Fungus Lua
- Создать Меню
- LuaEnvironment
- LuaBindings
- LuaScript
- LuaUtils
- Модуль Fungus Lua
- Контроль Fungus
- Команда ExecuteLua
- PlayerPrefs
- LuaStore
- String Table
- Unity Test Tools
LuaScript
Компонент ExecuteHandler
Когда вы создадите объект LuaScript, вы увидите, что он содержит компонент с именем «ExecuteHandler». Этот компонент позволяет указать параметры, когда должен выполняться скрипт Lua. По умолчанию он запускает сценарий Lua при запуске сцены, но вы можете изменить на выполнение после задержки, при каждом обновлении, при срабатывании триггера и т. д.
Если вы хотите выполнить LuaScript из пользовательского сценария C#, установите для параметра «On Event» значение «Nothing» и вместо этого вызовите метод LuaScript.OnExecute () напрямую. Вы также можете вызвать метод OnExecute () из события пользовательского интерфейса, например, событие пользовательского интерфейса кнопки «On Click».
Если вы хотите выполнить LuaScript из пользовательского сценария C#, установите для параметра «On Event» значение «Nothing» и вместо этого вызовите метод LuaScript.OnExecute () напрямую. Вы также можете вызвать метод OnExecute () из события пользовательского интерфейса, например, событие пользовательского интерфейса кнопки «On Click».
Lua скрипт и файлы
Вы можете ввести код Lua, который хотите выполнить, прямо в текстовое поле «Lua Script». Вы также можете поместить код Lua в текстовый файл в своем проекте и использовать свойство Lua File для его выполнения.
Вы также можете использовать оба варианта одновременно. В этом случае содержимое файла Lua загружается первым и к нему добавляется текст Lua Script. Это удобная функция для повторного использования и настройки кода, например, создайте текстовый файл Lua с функциями Lua для управления игрой, а затем вызовите эти функции из текстового поля Lua Script.
Вы также можете использовать оба варианта одновременно. В этом случае содержимое файла Lua загружается первым и к нему добавляется текст Lua Script. Это удобная функция для повторного использования и настройки кода, например, создайте текстовый файл Lua с функциями Lua для управления игрой, а затем вызовите эти функции из текстового поля Lua Script.
Lua модули и require()
Система модулей Lua позволяет создавать повторно используемые пакеты кода Lua и включать их в ваши сценарии Lua. Этот урок объясняет, как писать модули Lua. Файлы модулей в FungusLua нужно поместить в специальную структуру папок, чтобы функция Lua require () могла их найти.
Чтобы использовать модуль Lua:
Чтобы использовать модуль Lua:
- Создайте папку Resources / Lua в своем проекте. Капитализация здесь важна. Папка может быть создана внутри существующей папки в вашем проекте.
- Создайте файл mymodule.txt в папке Resources / Lua и добавьте в него свой скрипт Lua. (Переименуйте mymodule.txt в любое, что вы хотите).
- Теперь вы можете использовать функцию Lua require для загрузки модуля для использования в любом скрипте Lua, например
local mymodule = require("mymodule")
-- Call a function in the module
mymodule.myfunction()
Сообщения об ошибках
Когда скрипт содержит ошибки, есть несколько методов, которые вы можете использовать для отслеживания источника.
FungusLua компилирует код Lua при запуске сцены, так что он может быть быстро выполнен при необходимости позже. Это означает, что вы обычно будете видеть сообщения об ошибках синтаксиса Lua в консоли при запуске (во время компиляции) и ошибки времени выполнения, когда сценарий выполняется позже.
Все ошибки скрипта Lua генерируют сообщение об ошибке в журнале Unity, отображаемое красным.
Например, если вы попытаетесь запустить этот неверный код в объекте LuaScript:
not valid lua
Это будет генерировать сообщение об ошибке в журнале, как это
LuaScript.LuaScript:(1,0-3): unexpected symbol near 'not'
1: not valid lua
- Первая часть 'LuaScript.LuaScript' дает вам информацию о том, откуда запускается скрипт Lua.
- Следующая часть в скобках «(1,0-3)» сообщает номер строки и диапазон символов, в которых находится ошибка.
- Последняя часть строки дает вам описание типа ошибки.
- Следующая строка содержит список исходного кода Lua. Используйте указанную выше информацию о белье, чтобы найти строку, вызывающую проблему.
Одна из наиболее распространенных ошибок - попытка доступа к переменной, которая не существует. В этом примере сообщения об ошибке мы пытались получить доступ к полю 'name' в переменной v, которая еще не была определена.
LuaScript.LuaScript: (1,7-9): попытка индексировать нулевое значение
1: печать (v.name)
Чтобы устранить этот тип ошибки, тщательно проверьте, что переменная, которой вы хотите получить доступ, была определена, правильно написана и соответствует вашим ожиданиям. Вы можете использовать функции print () и inspect () для отображения информации об объекте в консоли. Например, вы, возможно, добавили привязку к игровому объекту, но забыли выбрать правильный компонент в привязке.
Для ошибок во время выполнения полезной техникой является добавление вызовов print () в код непосредственно перед тем, где происходит ошибка, и запуск ее снова. Таким образом, вы можете распечатать информацию на консоль, чтобы найти причину ошибки.
MoonSharp включает в себя инструмент удаленного отладчика, который вы можете использовать для пошагового просмотра кода Lua и проверки переменных. Смотрите LuaEnvironment для получения дополнительной информации.
Настройка LuaEnvironment
По умолчанию компонент LuaScript будет использовать первый LuaEnvironment, который он найдет в сцене для выполнения, или создаст его, если его не будет. Если вы хотите использовать определенное LuaEnvironment, установите его в свойстве Lua Environment. Это хороший способ сохранить изолированные друг от друга наборы сценариев Lua друг от друга.
Опция RunAsCoroutine
Эта опция запускает скрипт Lua как сопрограмму Lua, которая полезна для написания асинхронного кода с помощью функции coroutine.yield () в Lua. Если вам не нужно выполнять свой Lua-скрипт асинхронно, отмена выбора этой опции позволит избежать накладных расходов при запуске в качестве сопрограммы. Рекомендуется только для опытных пользователей!
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.