3

c# で Lua インターフェイスを使用して、作成したオブジェクトを lua の関数に渡しています。関数は正常に呼び出されますが、lua はエラーをスローし続けます。

LuaInterface.LuaException: /hook.lua:32: ローカル 'objj' のインデックスを作成しようとしています (nil 値)

これはc#コードです:

public class PerObj
{
    public string name;
    public PerObj() 
    {
    }
}

PerObj obj = new PerObj();
LuaFunction lf = lua.GetFunction ("item.HookMe");
lf.Call(obj);

そして、これがluaコードです:

function item:HookMe(objj)
    objj.name= "lalala"
end

The function is actually being called, but I'm not sure it's not working...

4

2 に答える 2

0

関数定義を次のように変更します。

function item.HookMe(objj)
    objj.name= "lalala"
end

元の定義のコロンは、関数にもselfパラメーターがあることを意味します。これらの関数は次のように呼び出されます: object:HookMe(). ただし、直接呼び出したいので、コロンは適用されません。

編集:
関数の定義を保持して保持したい場合は、次のselfように呼び出します。

lf.Call(null, obj);

selfオブジェクトも渡して呼び出すには:

lf.Call(lua["item"], obj);
于 2015-03-09T10:56:25.940 に答える