Java - LuaJ:超过3个参数。

lua函数中是否可以使用多于三个参数?

以下是我的代码片段:

LuaValue luaGlobals = JsePlatform.standardGlobals();
            luaGlobals.get("dofile").call(LuaValue.valueOf("./data/Actions/" + a_itemScript));

            LuaValue luaValLevel = CoerceJavaToLua.coerce(a_level);
            LuaValue luaValPlayer = CoerceJavaToLua.coerce(a_player);
            LuaValue luaValItem = CoerceJavaToLua.coerce(a_thing);
            LuaValue luaValItemX = CoerceJavaToLua.coerce(a_fromX);
            LuaValue luaValItemY = CoerceJavaToLua.coerce(a_fromY);

            LuaValue luaOnUse = luaGlobals.get("onUse");

            if(!luaOnUse.isnil())
            {
                luaOnUse.call(luaValLevel, luaValItemX, luaValItemY);
            }
            else
            {
                a_parent.WriteInConsole("\nx Cannot Run Script: " + a_itemScript);
            }
点赞
用户2556943
用户2556943

使用LuaValue.invoke()代替LuaValue.call()。 这个函数需要一个Varargs参数,可以包含任意数量的参数,并返回一个包含所有返回值的Varargs:

Varargs results = luaOnUse.invoke(
    LuaValue.varargsOf(new LuaValue[] {
        luaValLevel, luaValPlayer, luaValItem, luaValItemX, luaValItemY }));
2015-03-05 00:09:52