2

AluminiumLua を使用すると、以下のように関数を変数に設定する lua ファイルがあります。

local Start = function() print("Inside Start!") end

.NET でこのファイルをロードしようとしましたが、解析メソッドでハングアップし、元に戻りません。

class Program
{
    static void Main(string[] args)
    {
        var context = new LuaContext();

        context.AddBasicLibrary();
        context.AddIoLibrary();

        var parser = new LuaParser(context, "test.lua");

        parser.Parse();

    }
}

ぶら下がっている理由はありますか?

4

1 に答える 1

2

AluminiumLua はまだ試していませんが、LuaInterface は何度も使用しています。起動時に関数をロードする場合は、ファイルをインクルードまたは DoFile/DoString して、次のように関数を実行します。

local Start = function() print("スタートアップ") end

始める()

lua からフックを定義しようとしている場合は、LuaInterface を KopiLua で使用して、次のようにすることができます。

C#:

static List<LuaFunction> hooks = new List<LuaFunction>();

// Register this void
public void HookIt(LuaFunction func)
{
    hooks.Add(func);
}

public static void WhenEntityCreates(Entity ent)
{
    // We want to delete entity If we're returning true as first arg on lua
    // And hide it If second arg is true on lua
    foreach (var run in hooks)
    {
        var obj = run.Call(ent);
        if (obj.Length > 0)
        {
            if ((bool)obj[0] == true) ent.Remove();
            if ((bool)obj[1] == true) ent.Hide();
        }
    }
}

ルア:

function enthascreated(ent)
    if ent.Name == "Chest" then
          return true, true
    elseif ent.Name == "Ninja" then
          return false, true
    end
    return false, false
end
于 2013-10-24T14:08:50.617 に答える