0

私は以前、エンドユーザーとしてLuaを何度か使用しましたが、Luaでメソッドを作成し、RegisterFunction呼び出しを介してそのメソッドをプログラムに登録できたことを思い出しているようです。

このセットアップを機能させるには、アプリケーション内にRegisterFunction呼び出しを作成する必要があることはわかっていますが、私の質問は、Lua内のメソッドのサポートを自分で実装する必要があるかどうかです。

この時点で私が持っている唯一のオプションがDoStringとDoFileであると私が知る限り、これに関するヘルプはどこにも見つかりません。

すべてのエンティティコードのゲームセットアップにLuaを追加しようとしていますが、エンティティタイプごとに特定のイベントにスクリプトを配置できるようにセットアップしており、それらのイベントにLuaメソッドをアタッチしてそれらを呼び出したいと思います。

例えば:

OnDamagedEvent += DoLuaMethod(method, Entity ID);

プログラミングがどのように機能するかを理解しているので、文字列にメソッド全体が一度に含まれていない限り、「DoString」だけからメソッド全体を実行することはできないと思います。利用される?エンジンに一度に1行だけ送信することを計画していました。

Luaでメソッドを定義した場合、それは永続的に(その場合)luaで定義されて使用されますか?

もしそうなら、どうすればそのメソッドアクセサーをC#に入れて後でアクセスし、パラメーターを呼び出すために必要な情報を送信できますか(私が思い出したものには、選択する必要のある特定のメソッドTYPESがあり、送信先の情報がわかっていました)方法)

概念的に非常に単純に見えるものをセットアップする方法がわからないことについて、まったくの初心者のように聞こえる場合はお詫びします。コードをどのようにレイアウトする必要があるのか​​、LuaInterfaceのどのメソッドを使用する必要があるのか​​わかりません。

助けてくれてありがとう:)

4

1 に答える 1

0

さて、私は私の質問に対するすべての答えを見つけました。

LuaInterfaceには、lua内の関数を参照するために使用できる「LuaFunction」クラスがあります。

スクリプトが実行されると、初期化された関数は、スクリプトが実行された後も初期化されたままになります。

Lua.GetFunction(FUNCTION NAME)を使用してLuaFunctionオブジェクトを設定できます。ここで、Luaは、関数を保持するLuaのインスタンスを参照します(スクリプトの実行後)。

Exposedメソッドにいくつかの新しいメソッドを追加しました:RegisterEntityEventとRegisterGlobalEventにいくつかのパラメーターを追加して、このメソッドを追加するイベントをより具体的にできるようにしました。その設定は次のようになります。

public static void RegisterEntityMethod(string MethodName, string EntityType, string EventType)
{
    EntityTypes[EntityType].Events[EventType] += CallLuaMethod(LuaEngine.LuaVM.GetFunction(name));
}

///\これはテストされていないcの例です

これを呼び出すには、LuaFunction.Call(Parameters);を実行するだけです。

これにより、ゲームにあるイベントハンドラー内からLuaスクリプトにあるメソッドを呼び出すことができます。

思ったほど簡単でしたが、その方法を学ぶ場所を見つけるのは簡単ではありませんでした:D

ここ:http://forum.junowebdesign.com/net-programming/30025-luainterface-explained.html>

于 2012-09-02T07:45:24.430 に答える