0

C# luainterface ライブラリにいくつか問題があります。

1.スクリプトをロードし、その関数を次のように抽出します。

LuaFunction function = lua.GetFunction("Update"); 

しかし、同じ名前の関数を含む 2 つの異なるスクリプトをロードするとどうなるでしょうか。script1 と script2 から同じ名前の 2 つの異なる関数を抽出する方法は?

2.関数をメモリにロードする場合、すべての関数ではなく、特定の関数を破棄することはできますか?

3. Lua.DoFile メソッドを使用して、ファイルから特定の関数を実行したい。それを行う方法はありますか?

編集

2.私は、私がこのようなことができることを発見しました

string f = @"
        function hh()
          end";

        var result = lua.DoString(f)[0] as LuaFunction;

しかし、何らかの理由で null 例外が発生します。理由はありますか?

4

1 に答える 1

0

DoString は、スクリプトが返すものを返します。

lua.DoString ("return 10+10")[0]; // <-- will return Double. 20

Lua 関数を LuaFunction オブジェクトとして取得する場合は、関数を返す必要があります。または、[] 演算子を使用して hh のグローバル値を取得することをお勧めします。

lua.DoString ("function hh() end");
var hh = lua["hh"] as LuaFunction;
hh.Call ();

例を次に示します: https://github.com/codefoco/NLuaBox/blob/master/NLuaBox/AppDelegate.cs#L46 (ただし、LuaInterface の代わりに NLua を使用)

Dispose関数が不要になったら、忘れずに LuaFunction 呼び出しを解放してください。

于 2013-11-16T16:00:18.377 に答える