問題タブ [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.
c++ - LuaBridge がコンストラクターを正しく作成しない
LuaBridge を使用して、いくつかのクラスと関数を Lua に移植します。私は現在デバッグ中であり、常に取得します
これは main.lua です:
これは、TexVector の初期化コードです。
私の知る限り、Luaの「クラス」の新しいコンストラクター関数です。初期化または Lua スクリプトに何か問題がありますか?
c++ - LuaBridge とメンバー関数
今日LuaBridgeをダウンロードしたばかり で、これまでのところ非常に満足しています. 私が気づいたことの 1 つは、関数パラメーターとして lua_State を持つという通常の要件を回避できることです。
私がすることができます:
それは問題なく動作しますが、次のような効果があるとしたら:
lua_State 以外の引数を持つメンバー関数を登録できないことをドキュメントで読んだことはありません。LuaBridge コードがこれを問題なく実行しているのを見たことがあります。ここで何が間違っていますか?
c++ - Lua OOP関数が呼び出されていませんか?
Allegro 5 で Lua と LuaBridge を使用しています。すべてのグラフィック オブジェクトを Lua に移植することにしましたが、いくつかの問題が発生しています。
一度呼び出される文字クラス
関数がメイン プログラムから呼び出される Lua スクリプト:
基本的に、スクリプトは適切な座標と画像でキャラクターを初期化し、それを描画しますが、ロジックが呼び出されていない (ロジック ループ内にある) か、X 座標を変更する関数に問題があります。
また、タスク マネージャーは、C++ で画像オブジェクトを持っていたときには発生しなかった、サイクルごとに約 30 KB のメモリ リークがあることを示唆しています。
必要な場合に備えて、LuaBridge 経由で Lua にエクスポートされた Bitmap 構造体のスニペットを次に示します。
更新: 私が把握できたことの 1 つは、メモリ リークがCoreLogicから発生していることです。C++ での呼び出しをコメント アウトすると、メモリ リークはなくなりましたが、呼び出しをそのままにして、CoreLogicの内容をコメント アウトすると、リークは続きました。うーん...
2 番目の更新: メモリ リークは、私が投稿していない AI の何かに絞り込まれました。
また、CoreLogic関数ではFoo.AI:DoBehavior()を呼び出しますが、これはまったく何もせず、メモリ リークを引き起こしました。
c++ - 組み込み型へのポインターでLuaBridgeを使用する
次のC関数について考えてみましょう。
LuaBridgeを使用してLuaで公開するにはどうすればよいですか?すべてのドキュメントと例は、ポイントされたオブジェクトがクラスである複雑なケースを示していますが、そのような単純なケースに対処する方法を見つけることができません...
些細なアプローチ(つまりluabridge::getGlobalNamespace(L).addFunction("test", &returnMultipleValuesByPointer))
、コンパイルされますが、値がアドレスによって渡されることを理解していません。
c++ - LuaBridge コールバック (lua 関数を c++ に渡す)
Luabridge(1.0.2) を使用して LUA から C++ に関数を渡す方法
そして、そのコールバックを C++ に渡します。
「クリック」は const std::string& ですが、Callback を関数としてどのように定義しますか? いくつかのアプローチ (void*,std::function) を試しましたが、どれも正しく機能しません。
c++ - Luabridge: C++ ライフタイム管理対象オブジェクトを返す
この抜粋は基本的なタイプで機能します:
ルアでは次のようになります。
ints の代わりにクラスを返すにはどうすればよいですか?
lua 部分は次のようになります。
エラーは次のとおりです。
c++ - Luabridge: 削除時のヒープ破損 (_CrtIsValidHeapPointer)
編集#3:
私のエンジンは次のようにセットアップされています。
次に、次の方法でいくつかの lua インターフェースを作成します。
Engine のゲーム ループは DisplayObject をループし、さまざまなタスクを実行します。LUA が RemoveDisplayObject() を呼び出すと、_CrtIsValidHeapPointer が発生します。
LUA オブジェクトの外部にあるアイテムを削除していますが、これが問題の原因ですか?
ヒープ エラーの原因は何ですか? これに別の方法でアプローチする必要がありますか?
エンジンのロジックは次のとおりです。
ゲーム(シングルトン)
含むDisplayObjects
(のベクトルDisplayObject
)
Lua バウンド クラス:
を呼び出しGame::Singleton
CreateDisplayObject
、最後のオブジェクトへのポインタを取得しますDisplayObjects
<----からポインターRemove()
を呼び出して渡す関数があります。これにより、ヒープの破損が発生します ( vector.clear () の呼び出し時)。そのため、ベクターからアイテムを削除すると、ヒープ エラーが発生します。Game::Singleton
RemoveDisplayObject
CreateDisplayObject
DisplayObject
ヒープの破損なしで、移動などで機能するいくつかの追加機能があります。
ルア:
Lua バインド クラスをラップする別のクラス
Lua Bound Class Remove()Remove()
を呼び出す関数が含まれています
ある時点で、エンジンは lua クラスで Remove() を呼び出す追加の lua ファイルをロードします。
c++ - LuaRef データへの Luabridge 弱参照
次の例を検討してください。
luabridge では、 asの寿命を延ばすfunction()
asを保存します。LuaRef
Container
RefCountedObjectPtr
これは、機能する弱いテーブルを使用するために使用する回避策ですが、見栄えが悪いです。
LuaRef
これに似た機能を持つ方法はありますか?それとも別の回避策がありますか?
c++ - LuaBridge と継承
LuaBridge を使用して、C++ から Lua に基底クラス ポインターでオブジェクトを渡そうとしています。派生クラスと基本クラスの両方が LuaBridge に正しく登録されています。
C++ 側:
Lua 側:
LuaでからFooBase*
に「キャストダウン」するにはどうすればよいですか? Foo*
Lua/LuaBridge はこれをサポートしていますか?