- О Fungus Lua
- Создать Меню
- LuaEnvironment
- LuaBindings
- LuaScript
- LuaUtils
- Модуль Fungus Lua
- Контроль Fungus
- Команда ExecuteLua
- PlayerPrefs
- LuaStore
- String Table
- Unity Test Tools
Доступ к нему можно получить из скриптов Lua через глобальную переменную 'luautils'. Этот компонент в основном выполняет настройку в фоновом режиме, но также предоставляет некоторые удобные функции для создания экземпляров, поиска и уничтожения игровых объектов на сцене.
Пример
Вот пример того, что вы можете сделать:
local go = luautils.Find("MyObject") -- Find a game object by name
luautils.Destroy(go) -- Destroy it
Функции GameObject
Это список функций GameObject, представленных в luautils.
-- Найти игровой объект по имени и вернуть его.
GameObject Find(string name)
-- Возвращает один активный тег с тегом GameObject. Возвращает ноль, если GameObject не был найден.
GameObject FindWithTag(string tag)
-- Возвращает список активных тегов с тегами GameObjects. Возвращает пустой массив, если GameObject не был найден.
GameObject[] FindGameObjectsWithTag(string tag)
-- Создайте копию GameObject.
-- Может быть использован для создания префабов.
GameObject Instantiate(GameObject go)
-- Уничтожает экземпляр GameObject.
Destroy(GameObject go)
-- Создает экземпляр именованного префаба
-- Префаб должен существовать в папке ресурсов в проекте.
GameObject Spawn(string resourceName
Регистрация типов C#
Наиболее важной функцией компонента LuaUtils является регистрация типов C #, чтобы к экземплярам этих типов можно было получить доступ из сценариев Lua.
Чтобы получить доступ к членам типа C # из Lua, тип сначала должен быть зарегистрирован в MoonSharp. Обратите внимание, что для объектов, добавленных с использованием компонента LuaBindings, соответствующие типы регистрируются автоматически.
Однако в некоторых случаях вам необходимо явно зарегистрировать тип. Самый простой способ сделать это - добавить имя типа в файлы JSON FungusTypes.txt или UnityTypes.txt, на которые ссылается компонент LuaUtils. Вы также можете создавать свои собственные файлы JSON для регистрации дополнительных типов. Обратите внимание, что типы, которые не содержатся в основной DLL-библиотеке приложения, должны будут использовать полное имя типа пространства имен в файле JSON.
Пример файла типа JSON
Пример файла типа JSON:
{
"registerTypes" : [
"Fungus.Block"
],
"extensionTypes" : [
"Fungus.LuaExtensions"
]
}
Регистрация типов напрямую
Если вам нужно зарегистрировать типы непосредственно из C # или выполнить более сложный тип регистрации, вы можете использовать класс MoonSharp UserData для этого. См. Документацию MoonSharp для списка поддерживаемых методов регистрации. Хорошее место для регистрации типов C # - метод Awake пользовательского компонента.
Другие утилиты
Имя привязки | Описание |
---|---|
time | Unity Time class. например 'time.deltaTime' возвращает delta time для этого кадра |
playerprefs | Класс Lua Preferences. Используется для сохранения данных на диск. |
prefs | Класс Fungus Prefs наша собственная оболочка вокруг PlayerPrefs, которая добавляет систему слотов. |
factory | Класс PODTypeFactory для создания общих plain-old-data типов |
luaenvironment | Компонент LuaEnvironment, используемый для выполнения сценариев Lua |
luautils | Ссылка на сам компонент LuaUtils |
test | Поддержка Unity Test Tools (если установлен) |
stringtable | FungusLua локализации String Table |
PODFactory
Из-за ограничений в C# / Mono, MoonSharp имеет ограниченную поддержку для работы с типами Plain-Old-Data (struct), такими как Vector3, Color и т. Д.
Наилучший подход здесь состоит в том, чтобы рассматривать свойства POD как неизменяемые объекты и никогда не пытаться изменять переменную POD, которая была получена из объекта C#. Вместо этого вы должны создать новый объект POD, заполнить его необходимыми значениями, а затем передать этот объект в вызовах кода C#. Класс LuaUtils PODFactory помогает сделать это для распространенных типов Unity.
Наилучший подход здесь состоит в том, чтобы рассматривать свойства POD как неизменяемые объекты и никогда не пытаться изменять переменную POD, которая была получена из объекта C#. Вместо этого вы должны создать новый объект POD, заполнить его необходимыми значениями, а затем передать этот объект в вызовах кода C#. Класс LuaUtils PODFactory помогает сделать это для распространенных типов Unity.
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.