問題タブ [luabridge]
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.
luabridge - LuaBridge を使用して C++ オブジェクトを lua スクリプトに転送する方法
次のようなコードで、lua スクリプト言語をシリアライゼーション ライブラリと統合したいと考えています。
残念ながらLuaBridgeはほぼ完璧に機能し、「クラスプロパティ」オブジェクトのコピーを作成しているため、スクリプトで行うすべての変更は次のとおりです。
私の C++ ライフタイム オブジェクトを変更しないでください。
私の質問は、変更されたデータを自分の C++ オブジェクトにコピーするように LuaBridge に強制するにはどうすればよいですか?
c++ - Luabridge を使用して sf::Event を Lua に公開する良い方法はありますか?
LuaBridge のreadmeによると、LuaBridge は「列挙定数」をサポートしていませんenums
。sf::Event
ほぼ完全なのでenums
、クラスを公開する方法はありますか? 現在、私が思いつくことができる他の唯一の解決策は、C++ でキーの押下を検出し、イベントを説明する文字列を Lua に送信することです。明らかに、最新のキーボードには約 100 個以上のキーがあり、これにより大規模で醜い just if ステートメントのセグメントが生成されます。
SFML を使用したことがない場合: sf::Event クラスのソース コードへのリンク
アップデート:
私の質問で概説されている関数を作成しようとした後、C++ では複数の文字列を返すことができないため、ほとんどのイベントが無視されるため、とにかく機能しないことがわかりました。
ソースの例 (動作しません):
更新更新:
この質問にはコメントも回答もなかったので、他のライブラリを除外しないことにしました。なので、列挙型をサポートするC++ライブラリがあれば、それを受け入れます
c++ - Luabridge の「addProperty」のエラー
Foo
単純なクラスを公開するための非常に単純なソース コードがいくつかあります。
main.cpp:
残念ながら、次のエラーが表示されます。
何が問題なのかわかりませんが、使用する必要がありますaddProperty
。そうしないと、コードが正しく見えません
c++ - Lua で sf::Text オブジェクトを描画するときのセグメンテーション違反
LuaBridge を使用して多くの SFML クラスを Lua に公開しました。ほとんどのクラスをテストしましたが、うまく機能します (sf::RectangleShape
などsf::Texture
)。ただし、 と に問題がsf::Font
ありsf::Text
ます。まず、公開する C++ コードsf::Font
とsf::Text
:
を使用する lua スクリプトを作成するText
とFont
、セグメンテーション エラーが発生することがあります。これは、フォントを設定した場合、Text オブジェクトを描画するときにのみエラーが発生することを意味します。
脚本:
アップデート:
他のSFMLクラスでテストした後、これはsf::Texture
and sf::Sprite
/ sf::RectangleShape
/sf::CircleShape
などの問題ではないようです。これはsf::Font
、参照が削除されているのではなく、問題であることを示しています
c++ - LuaBridge getGlobal は常に nil を返します
1 週間前に LuaBridge で最初の小さなテストを行ったところ、スクリプトから int を取得することができました。
今、このコードを削除し、ゲーム エンジンに Lua スクリプトを含めようとしましたが、機能しなくなりました。私はこれで基本的なコードに戻ろうとしました:
このスクリプトで
そして、それは私に与えます:
スクリプトから文字列または関数を取得しようとしたときも同じで、これで何が間違っているのかわかりません。
あなたの答えをありがとう:)
c++ - LuaユーザーデータをC++クラスオブジェクトに変換するには?
私はこのLuaコードを持っています:
Person(LuaBridge を使用して登録された C++ クラス) を表すユーザーデータを返します。そのため、lua_pcall を使用してこの関数を呼び出すと、lua スタックの最後の要素がそのユーザーデータになります。私の質問は、このユーザーデータを -1 で C++ の Person に変換 (キャスト) する方法です。
私はこれを試しましたが、プログラムを終了するだけです:
私はそれが理にかなっていることを願っています:)
c++ - 条件付きで C++ から Lua 関数を呼び出す
Lua を使用してスクリプトを作成し、C++ に埋め込みます。このプロセスではLuaBridgeを使用します。
私の Lua スクリプトには、C++ で使用するために最初に取得する必要がある変数がいくつかあります。さらに、非常に単純な関数があります。
ただし、この関数は特定の条件下でのみ呼び出されます。つまり、一連の複雑な計算の後でC++ コードから "true" が得られた場合にのみ呼び出されます。
私のLuaとLuaBridgeの知識によって制限されていますが、私が知っていることは次のとおりです。
を使用して、Lua スクリプトから変数と関数を読み取ることができます
しかし今、変数を読み取って最初に使用し、次にメンバー関数で使用する必要があります
別の C++ クラスで定義
条件が確定され、条件が「真」の場合、この run() 関数が呼び出されます。この run() 関数を C++ メンバー関数で直接呼び出すのが最善です。
さらなる処理の制限のため。
したがって、これが可能かどうか疑問に思っていました:
を使用して関数を読み取る
最初に他の変数と一緒にこの run() 関数を C++ コードのどこかに (おそらくクラス メンバー関数として) 「保存」します。クラス。これは可能でしょうか?可能であれば、どのように行うのですか?または他の良いアイデアはありますか?
c++ - LuaBridge で演算子を使用する方法
ベクトルクラスをエクスポートしようとしています
しかし、他の3つの演算子を試してみると、複数のオーバーロードがあります。使用したいものをどのように指定できますか?これは可能ですか?