【发布时间】:2011-04-18 05:48:35
【问题描述】:
我正在 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”将按预期工作而不发射子弹。我也尝试过将整个 circular_bullet.lua 复制到 level1_D2.lua 中,并且成功了,所以问题一定是 require 语句。
这两个文件在包的根目录下。 (我不知道如何将它们放在不同的目录中,因此我发现 Diner Dash 将其脚本保存在不同的目录中。) 但是,这两个文件不在我的 Xcode 项目中的同一组中。我尝试将它们放在同一个组中,但没有任何反应。
谁知道问题出在哪里?非常感谢!
【问题讨论】:
-
它可能试图使用 fopen 在错误的位置打开文件。看这里 - stackoverflow.com/questions/318341/how-to-fopen-on-the-iphone
-
啊,我忘了注意,但我尝试使用完整路径并没有改变:(