2

私はC#でLuaInterfaceを使用しており、すべてが正しく設定されています。

私ができるようにしたいのは、スクリプトがlua.DoFile()を使用して開始されたときに、スクリプトが送信できるPlayerオブジェクトにアクセスできることです...

現在のコード:

public static void RunQuest(string LuaScriptPath, QPlayer Player)
{
    QMain.lua.DoFile(LuaScriptPath);
}

ただし、ご覧のとおり、スクリプトはPlayerオブジェクトにアクセスできません。

4

1 に答える 1

6

2つの選択肢があります。1つ目は、プレーヤーをLuaのグローバル変数にすることです。

QMain.lua['player'] = Player

playerその後、スクリプトでアクセスできるようになります

2番目のオプションは、スクリプトにプレーヤーをパラメーターとして受け入れる関数を定義させることです。したがって、現在のスクリプトに...code...現在含まれている場合、次のものが含まれます。

function RunQuest(player)
    ...code...
end

C#コードは次のようになります。

public static void RunQuest(string LuaScriptPath, QPlayer Player)
{
    QMain.lua.DoFile(LuaScriptPath); // this will not actually run anything, just define a function
    QMain.lua.GetFunction('RunQuest').Call(player);        
}
于 2011-10-11T12:22:17.267 に答える