0

クラス全体を C# コードから lua に渡したいので、LUA で新しいオブジェクトを作成し、そのメソッド、フィールドなどを使用できます。それが完了したら、ac# コードで作成され、何らかの方法で lua に渡されたオブジェクトを lua で使用できるかどうかを知りたいです。

私のコードは次のとおりです: atm、クラス Person1 の luainterface オブジェクトで作成し、say() を lua スクリプターに入力したときにその関数を使用することはできません (そこでオブジェクトを作成せずに)、Person2.say( の出力を取得しています。 )

using System;
using LuaInterface;
using System.Reflection;

namespace ConsoleApplication
{


public class Person1
{
    public void say()
    {
        Console.WriteLine("person1 says: hehe");
    }
}


public class Person2
{
    public void say()
    {
        Console.WriteLine("person2 says: hihi");
    }
}

class Class1
{
    static void Main(string[] args)
    {
        Lua lua_compiler = new Lua();

        Person1 person1 = new Person1();
        Person2 person2 = new Person2();

        lua_compiler.RegisterFunction("say", person1, person1.GetType().GetMethod("say"));
        lua_compiler.RegisterFunction("say", person2, person2.GetType().GetMethod("say"));


        while (true)
        {
            string line = Console.ReadLine();
            try { lua_compiler.DoString(line); }
            catch { }
        }
    }
}
}
4

1 に答える 1

2
    Person1 person1 = new Person1();
    Person2 person2 = new Person2();

    lua_compiler["person1"] = person1;
    lua_compiler["person2"] = person2;


    while (true)
    {
        string line = Console.ReadLine();
        try { lua_compiler.DoString(line); }
        catch { }
    }

この行では、 person1:say() または person2:say() を使用できます

クラスに多くの関数とプロパティがある場合、クラス全体を渡すのは時間がかかります。

于 2012-10-23T15:01:31.030 に答える