問題タブ [luainterface]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - ユーザー入力への応答とフレームのレンダリングを続行しながら、続行するまで x 秒待機します
バックグラウンド
現在、 Lua スクリプトでアプリケーションを制御できるように、LuaInterfaceを利用する XNA アプリケーションを作成しています。
私が欲しいもの
私の開発では、多くのことがおそらく「時間」に基づいていることに気付きました。そのようなものには、情報を表示してから x 秒後にそれを削除する、x 秒かかるとゲームを終了する、 x秒ごとにカメラを特定の距離だけ緩めるのに使用されることなどが含まれます。自分のアプリケーションではなく Lua で関数を実装したかったwait
のですが、この時点では入力を受け付けています (機能させることができないため)。
これまでに試したこと
inv.lua
gELua.vb
Game
(私の XNA ゲーム オブジェクトはどこにありますか)
では、なぜ私のアイデアがうまくいかないのでしょうか?
Game.Tick()
現在の問題は、すべてを継続するために毎回呼び出しているにもかかわらず、アプリケーションの XNA 部分が入力の受信を停止することです。
だから、私の質問は、これを行うためのより良い方法はありますか? ユーザー入力で問題が発生するまでは、かなりうまく機能していると思いました。うまく機能するこのようなものを実装した人はいますか?
c# - LuaInterface 用の Lua モジュールの構築
LuaInterfaceにロードする必要がある Lua モジュール ( lpack ) があります。プロジェクトでいくつかの異なる構成を試しましたが、リンクがわかりません。
エラーが発生しますunresolved external symbol "void __stdcall lua_replace(struct lua_State *,int)" (?lua_replace@@YGXPAUlua_State@@H@Z) referenced in function "int __stdcall l_unpack(struct lua_State *)" (?l_unpack@@YGHPAUlua_State@@@Z)
dumpbin /exports
lua51.lib ファイルで実行する?lua_replace@@YAXPAUlua_State@@H@Z
と、 Dependency Walker を使用して lua51.dll で見つけたものと一致するものを見つけることができる?lua_replace@@YAXPAUlua_State@@H@Z
ため、関数は存在しますが、名前は一致しません。
私はこのレベルのリンカー管理にあまり詳しくないので、これは私の単純なエラーかもしれません。lpack ビルドの値が lua51.lib 入力ファイルの値と一致しないのはなぜですか?
アップデート
lua51.dll および lua51.lib ファイル内のすべてのエクスポートは__cdecl
、私の lpack プロジェクトは に設定されてい__stdcall
ます。そのプロパティを変更すると (C/C++ -> Advanced -> Calling Convention の下)、コンパイルの問題が修正され、lpack.dll ファイルが作成されました。
ただし、lua からファイルをロードしようとするrequire('lpack')
と失敗します。The specified procedure could not be found.
LoadLibraryA でライブラリをロードする lua C コードを中断すると、NULL と 0x7F の GetLastError() コードが返されます。
更新 2
ロードしようとしていた lpack.dll ファイルは、間違った出力ディレクトリが原因で古くなったため、LoadLibrary の失敗が修正されました。次に GetProcAddress が失敗しextern "C"
ますが、Mud の推奨に従って lpack.c ファイルのエクスポート関数に追加すると、問題は解決しました。
c# - Luainterface、ac# コードからクラス全体を渡す方法は?
クラス全体を C# コードから lua に渡したいので、LUA で新しいオブジェクトを作成し、そのメソッド、フィールドなどを使用できます。それが完了したら、ac# コードで作成され、何らかの方法で lua に渡されたオブジェクトを lua で使用できるかどうかを知りたいです。
私のコードは次のとおりです: atm、クラス Person1 の luainterface オブジェクトで作成し、say() を lua スクリプターに入力したときにその関数を使用することはできません (そこでオブジェクトを作成せずに)、Person2.say( の出力を取得しています。 )
c# - Lua そのようなタイプはありません: loadassembly
Luaを使用してスクリプトを作成しようとしています:-
と test.lua :-
しかし、それはこの例外をスローする動作していません:-
test.lua 、 lua51.dll 、および LuaInterface.dll が同じディレクトリにありますが、何が欠けていますか?
c# - LuaInterface を使用して C# クラスを LUA 関数にマッピングする
クラスをロードするだけで、クラスを C# 関数に直接マップする方法はありますか? 100以上作っRegisterFunctions
てマッピングする代わりに?
例:みたいな
ルアの内部:
c# - Lua (for Windows) 用にロード可能なカスタム .NET dll を作成するには?
私たちは .NET フレームワークでプロジェクトを行っており、その機能のほとんどを後で Lua スクリプトで利用できるようにしたいと考えています。LuaInterface の助けを借りて、dll をコンパイルし、それを Lua スクリプトにロードできると考えました。しかし、どういうわけかうまくいきませんでした。
DID の機能は次のとおりです。
ご覧のとおり、ここでは標準のアセンブリと型を読み込んでいますが、これは大きな問題にはなりませんでした。ただし、独自の dll 'LuaTest' を .NET 4.0 でコンパイルして、LUA にロードしようとすると、. それは動かなかった。のようなものを書きました。
ここで、'PlanetarySystem' は LuaTest のクラスです。このコードを実行すると、インタプリタは次のように言うでしょう: グローバル 'PlanetarySystem' (nil 値) の呼び出しを試みます。
dllをロードする別の方法も試しました:
実行後、インタープリターは次のメッセージをスローします。
私は .NET フレームワークと LuaInterface の初心者です。たぶん、私はまったく間違ったことをしました。これについて私を助けてください。どうもありがとう!
編集:おそらく、このdllがLUAロード可能であることを示すために、dllにLuaの「エントリポイント」が必要ですか???
編集:LUAではなくLua。ポルトガル語を話す人々に不快感はありません。私が使用している Lunanet は、.NET 4.0 と互換性がある必要があります。そうでない場合、最初のコードは機能しません。
integration - C# と LuaInterface: Lua で C# オブジェクトにテーブル エントリを追加する方法
私は MonoDevelop で SharpLua を使用しています。Luaから使えるはずのC#側のクラスを作りました。Lua からすべてのフィールドにアクセスできます。それは非常に簡単です。
でLuaからアクセスできます
さて、Lua で新しいフィールドを作成したいと思います。Luaでは次のようになります
しかし、これはうまくいきませんでした。ObjectTranslator でエラーが発生します。そのため、Lua からテーブルを拡張できませんでした。C# からこの新しいエントリにアクセスしたくありませんでした。それらを作成することだけが可能であるべきです。
これを達成する他の方法はありますか?LuaTable からクラスを作成し、これを Lua に挿入できますか?
Luaで使用するよりも
しかし、知りたいことが LuaTable で変更された (NewLuaTable.Name が変更された) という通知をどのように受け取ったのでしょうか?
ご協力ありがとうございました。
c# - dll を介して C# クラスを Lua 関数にマッピングする
「LuaTest」名前空間には、「Planet」というクラスがあります。C# コードは次のようになります。
次に、LuaTest.dll をビルドし、このファイルを Lua スクリプトが保存されているフォルダーと同じフォルダーにコピーしました。私が書いたLuaスクリプトで:
ただし、このコードは機能しません。Lua インタープリターは次のエラーをスローします。
私の LuaTest アセンブリがまったくロードされていないと思われます。誰かが私が間違っていた場所を指摘できますか? この問題に何日も悩まされていたので、とても感謝しています。
また、LuaInterface.dll が .NET4.0 環境で再構築されたバージョンであることを追加すると役立つ場合があります。
c# - LuaInterface-RegisterFunctionオブジェクトリファレンス
LuaInterfaceをC#に統合しようとしていますSystem.NullReferenceException
が、C#関数をLuaにバインドしようとすると、が表示されます。私がコンパイルして実行しようとしているコードは次のとおりです。
そして、このコードを実行するSystem.NullReferenceException
とAdditional information: Object reference not set to an instance of an object.
、RegisterFunction
メソッドが機能しなくなったというメッセージが表示されます。
c# - LuaInterfaceで構文エラーを処理する
LuaInterfaceを使用してLuaScriptingインターフェイスをC#プロジェクトに統合しようとしています。
構文的に正しいコードを実行すると期待どおりに機能しますが、構文エラー(またはその他のエラー)がスクリプトに導入されるとすぐに、SEHException
エラーに関する情報なしでがスローされます。
動作をトリガーする簡単な例:new LuaInterface.Lua().DoString("die");
もちろん、これはLuaのエラー処理メカニズムを完全に無効にし、私にとっては目立たないものです。
どうやらこれは2011年以来開いている既知のバグです。
回避策、このバグのないバージョンのLuaInterfaceはありますか、それともエラーを正しく処理する代替のluaラッパーがありますか?