Je travaille sur un jeu de tir sur iPhone et j'ai besoin lua pour les niveaux de script, ennemis, etc J'ai donc écrit un script de balle comme ceci:Lua: require() ne fonctionne pas sur iPhone
-- circular_bullet.lua
local time_between_bullets = 0.2;
...
function InitializeCircularBullet(objectName)
...
end
et un script ennemi:
-- level1_D2.lua
require("circular_bullet.lua");
...
Mais il est apparu que le script ennemi ne peut « exiger » le script de balle. Je essayé de regarder dans la bibliothèque de lua, et a constaté que, dans 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);
...
}
Il entrerait dans le « else if » branche, ce qui signifie une erreur est survenue, mais je ne sais pas comment lire cette Message d'erreur.
Si je commente la ligne "require", l'ennemi "level1_D2" fonctionnera comme prévu sans tirer de balle. J'ai également essayé de copier l'intégralité de circular_bullet.lua dans level1_D2.lua, et cela a fonctionné, donc le problème doit être l'instruction require.
Ces deux fichiers se trouvent sous le répertoire racine du package. (Je ne sais pas comment les faire dans un répertoire différent, donc j'avais découvert que Diner Dash gardait ses scripts dans un répertoire différent.) Cependant les deux fichiers ne sont pas dans le même groupe dans mon projet Xcode. J'ai essayé de les mettre dans le même groupe mais rien ne s'est passé.
Quelqu'un sait quel est le problème? Merci beaucoup!
Il est possible qu'il essaie d'utiliser fopen pour ouvrir le fichier au mauvais endroit. voir ici - http://stackoverflow.com/questions/318341/how-to-fopen-on-the-iphone –
Ah, j'ai oublié de noter mais j'ai essayé d'utiliser le chemin complet et rien n'a changé :( – Chengyang