Lua: require () не работает на iPhone - PullRequest
1 голос
/ 28 сентября 2010

Я работаю над стрелялкой на iPhone, и мне нужен lua для написания сценариев уровней, врагов и т. Д. Поэтому я написал такой сценарий пули:

-- circular_bullet.lua
local time_between_bullets = 0.2;

...

function InitializeCircularBullet(objectName)
  ...
end

и сценарий врага:

-- level1_D2.lua
require("circular_bullet.lua");

...

Но оказалось, что вражеский сценарий не может "требовать" сценарий пули.Я попытался заглянуть в библиотеку lua, и обнаружил, что в loadlib.c:

static int ll_require (lua_State *L) {
  ...
    if (lua_isfunction(L, -1))  /* did it find module? */
      break;  /* module loaded sucessfully */
    else if (lua_isstring(L, -1))  /* loader returned error message? */
      lua_concat(L, 2);  /* accumulate it */
    else
      lua_pop(L, 1);
  ...
}

Это будет входить в ветку "else if", что означает, что произошла ошибка, но я понятия не имею, как читатьэто сообщение об ошибке.

Если я закомментирую строку «require», враг «level1_D2» будет работать как умышленно, не стреляя пулей.Я также попытался скопировать весь файл round_bullet.lua в level1_D2.lua, и это сработало, поэтому проблема должна заключаться в утверждении require.

Эти два файла находятся в корневом каталоге пакета.(Я не знаю, как сделать их в другом каталоге, поэтому я обнаружил, что Diner Dash хранит свои скрипты в другом каталоге.) Однако эти два файла не входят в одну группу в моем проекте XCode.Я пытался поместить их в одну группу, но ничего не произошло.

Кто-нибудь знает, в чем проблема?Большое спасибо!

Ответы [ 3 ]

1 голос
/ 22 октября 2010

У меня есть фрагмент, который может помочь вам изменить этот путь:

// Initialize library path
lua_pushstring(L,"package");
lua_gettable(L, LUA_GLOBALSINDEX);

string path = string(Globals::GetPathPrefix())+"?.lua";

lua_pushstring(L, "path");
lua_pushstring(L, path.c_str());
lua_settable(L, -3);

lua_pop(L,1);   
1 голос
/ 30 сентября 2010

Наконец я получил ответ !!!

функция lua require выполняет поиск в каталоге.

Пока я не знаю, как изменить этот путь поиска, но он сработал.

0 голосов
/ 21 октября 2013

У меня тоже было это, когда я был новичком в Lua.Я не знаю, это также появляется на iPhone, но в Windows мне пришлось удалить «.lua», поэтому просто удалите расширение.

...