2011-09-15 5 views
3

私が作っているVB.netのゲームにLuaを接続しようとしています。今、私はここで見ように私は、それ自体で各機能を配線することができます知っているのに十分な読んだ:VB.netでのLuaInterfaceの使用

pLuaVM.RegisterFunction("quit", pPrg.GetType(), pPrgType.GetMethod("quit")) 

、どのように私は、インスタンスのクラスに私のLuaのスクリプト作成のためにそれが可能なこれらのクラスの変更の性質になるだろうなど

RegisterFunctionはちょっとお粗末に見えます。

ありがとうございました!

+0

に基づいて

は、あなたがドキュメントを読むことがありますか? www.lua.inf.puc-rio.br/luanet/luainterface/luainterface.pdf。 'userdata' Luaタイプについて読む –

答えて

1

私の最初のアドバイスは、LUAInterfaceを使用しないことです。これはクロスプラットフォームではないため、代わりにIronPythonを使用することもできます。これは、LUAとしてピックアップするのと同じくらい簡単で、ゲームの作成方法に応じてWindowsとOSXで実行されます。 XNAとOpenTKは、グラフィックエンジンのモノラルでクロスプラットフォームで動作するはずです。

私自身のvb.netベースのゲームでLUAを使い果たし、最終的には鉄のpythonを決めたとき、私はこれを見つけました。

しかし、あなたはLUAを使いたいと仮定します。ここで試すことができるものがあります。 Luaのから

Public Shared Lua as New LuaInterface 

Sub Game() 
Dim LuaCaller as New LuaAccess 
Lua("LuaAccess") = LuaCaller 
End Sub 

Public Class LuaAccess 
    Public Sub Grant(NewClass as String, Variable as String) 
     Select Case NewClass 
       Case "LuaAccess" 
        Lua(Variable) = New LuaAccess 
    End Sub 
End Class 

その後:

あなたが知っているという事実に基づいて: 書き込まれたvb.netコードが実行時間の後に変更することはできません、あなたはこのような何かを行うことができます

LuaAccess:Grant("LuaAccess", "MyNewLuaAccess") 

インスタンスを作成できるようにするクラスごとに新しいケースを追加することができます。それを使用してクラスの新しいインスタンスを作成します。 あなたはちょうど潜水艦、または変数を作成し、メインプログラムで使用されるアクティブなクラスを変更することができるようにしたい、またはクラスの両方が変数のコピーは1つだけありそうすれ

Public Shared MyVar as Integer 

を共有している場合これはアプリケーションのどの部分(ルアを含む)でも変更可能です。

私は正直なところだろうが、IronPythonのは本当にこの種のものに適しており、まだ積極的にLuaInterfaceとは違って、開発されています。

1つのことを覚えておいてください。スクリプティングに関して言えば、スクリプトエンジンにあまりにも多くの制御を与えたくないのです。特にゲームになると、エンジンにできるすべてのものにアクセスできるようになります。あなたが慎重でない場合は、それは不正行為に使用することができます。

幸運にも、私は助けてくれることを願っています。 LuaInterfaceランタイムv2.0.50727の (Lua51.dllを使用しています1)

関連する問題