Я задаюсь вопросом, как использовать функции из другого сценария в Lua. Например, сказать GameObjectUtilities
содержит функции что многие GameObject
сценарии будут использовать. Slime
(a GameObject
) сценарий хочет использовать функцию в GameObjectUtilities
.
Я испытываю затруднения, заставляя это работать. Я посмотрел здесь, но я все еще не действительно полностью понимаю. Сделайте я должен создать модуль или таблицу для сдержания функций GameObjectUtilities
для функций в нем, чтобы использоваться в других сценариях? Если так, что лучший способ состоит в том, чтобы пойти об этом?
Это очень нечетно. Это на самом деле работает, когда я просто делаю это нормальный путь. Проблема состоит в том, что, когда я запускаю свое приложение и оно пытается использовать сценарий, оно не работает. Я не получаю его.
Нет, вам не нужно создать модуль. Если вы просто создадите foo.lua
следующим образом:
function double(n)
return n * 2
end
А затем в вашем скрипте потребует 'foo'
, вы сможете получить доступ к double
функция точно так же, как она была определена в том же скрипте. Эти функции не могут получить доступ к вашим локальным пользователям, но они создаются в той же среде - все, что делает module 'name'
, - это создает новую таблицу и сбрасывает текущую среду в эту таблицу.
Итак, вы можете просто сделать:
function slimefunc(...) stuff() end
В GameObjectUtils.lua
, и если вам требуется 'GameObjectUtils'
, тогда Slime
может просто использовать slimefunc
. Или, если вы хотите, чтобы он располагался в пространстве имен:
utils = {}
function utils.slimefunc(...) stuff() end
И он будет доступен как utils.slimefunc
. (Если вы это сделаете, вы должны быть очень осторожны, чтобы не допустить утечки ваших имен - разумно используйте местных жителей.)
У вас нет дали нам достаточно информации. Например, вы не говорите, определен ли GameObjectUtilities
или каково его значение. (Я предполагаю, что он установлен на истина
.)
Я настоятельно рекомендую вам купить второе издание превосходной книги Роберто Иерусалимши Программирование на Lua , который объясняет идиоматическое использование require
и module
очень просто и ясно. Это также отличная книга для всех, кто использует Lua, чтобы помочь получить максимальную отдачу от языка и библиотек. К счастью, существует бесплатный образец главы , который на данный момент охватывает именно ту тему, которую вы ищете. Но все равно купите книгу; 25 долларов потрачены не зря: -)
Если вы не хотите покупать книгу, вы можете прочитать бесплатный образец главы , а также прочитать о , как делать то, что "старый" способ, без модуля (...)
, потому что вся предыдущая редакция бесплатна в Интернете.
Один из возможных коротких ответов: ваш сценарий «утилит», вероятно, должен создать таблицу , а вернуть ее .