Lua - Как использовать функции из другого сценария

Я задаюсь вопросом, как использовать функции из другого сценария в Lua. Например, сказать GameObjectUtilities содержит функции что многие GameObject сценарии будут использовать. Slime (a GameObject) сценарий хочет использовать функцию в GameObjectUtilities.

Я испытываю затруднения, заставляя это работать. Я посмотрел здесь, но я все еще не действительно полностью понимаю. Сделайте я должен создать модуль или таблицу для сдержания функций GameObjectUtilities для функций в нем, чтобы использоваться в других сценариях? Если так, что лучший способ состоит в том, чтобы пойти об этом?

Это очень нечетно. Это на самом деле работает, когда я просто делаю это нормальный путь. Проблема состоит в том, что, когда я запускаю свое приложение и оно пытается использовать сценарий, оно не работает. Я не получаю его.

13
задан Doorknob 15 December 2014 в 19:12
поделиться

2 ответа

Нет, вам не нужно создать модуль. Если вы просто создадите 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 . (Если вы это сделаете, вы должны быть очень осторожны, чтобы не допустить утечки ваших имен - разумно используйте местных жителей.)

12
ответ дан 2 December 2019 в 00:58
поделиться

У вас нет дали нам достаточно информации. Например, вы не говорите, определен ли GameObjectUtilities или каково его значение. (Я предполагаю, что он установлен на истина .)

Я настоятельно рекомендую вам купить второе издание превосходной книги Роберто Иерусалимши Программирование на Lua , который объясняет идиоматическое использование require и module очень просто и ясно. Это также отличная книга для всех, кто использует Lua, чтобы помочь получить максимальную отдачу от языка и библиотек. К счастью, существует бесплатный образец главы , который на данный момент охватывает именно ту тему, которую вы ищете. Но все равно купите книгу; 25 долларов потрачены не зря: -)

Если вы не хотите покупать книгу, вы можете прочитать бесплатный образец главы , а также прочитать о , как делать то, что "старый" способ, без модуля (...) , потому что вся предыдущая редакция бесплатна в Интернете.

Один из возможных коротких ответов: ваш сценарий «утилит», вероятно, должен создать таблицу , а вернуть ее .

0
ответ дан 2 December 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: