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

FungusLua. LuaUtils

LuaUtils - это компонент, который расширяет среду Lua некоторыми часто используемыми функциями.

Доступ к нему можно получить из скриптов 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 (если установлен)
stringtableFungusLua локализации String Table

PODFactory

Из-за ограничений в C# / Mono, MoonSharp имеет ограниченную поддержку для работы с типами Plain-Old-Data (struct), такими как Vector3, Color и т. Д.

Наилучший подход здесь состоит в том, чтобы рассматривать свойства POD как неизменяемые объекты и никогда не пытаться изменять переменную POD, которая была получена из объекта C#. Вместо этого вы должны создать новый объект POD, заполнить его необходимыми значениями, а затем передать этот объект в вызовах кода C#. Класс LuaUtils PODFactory помогает сделать это для распространенных типов Unity.

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

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

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