問題タブ [lua-userdata]

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.

0 投票する
2 に答える
298 参照

lua - Lua メタテーブルで「メソッド」とインデックス演算子の両方を指定する

メソッドとインデックス演算子 (整数インデックスを使用) の両方をサポートするには、ユーザーデータ オブジェクトが必要です。関数を介してメソッドをシミュレートせずに、共通のメタテーブルでこれを達成する方法はありますか?

metatable(object).__index実際のメソッドを含むテーブルとmetatable(metatable(object).__index).__index、インデックス演算子を実装する関数に設定することにより、メタテーブルをチェーンしてみました。ただし、その関数は__index、元のオブジェクトではなく、最初のテーブルを引数として呼び出されます。メタメソッドが関数の場合、元のオブジェクトを渡す方がはるかに理にかなっているから__indexです。とにかく、__index関数内のメソッド名を明示的にチェックせずに、私が望むものを達成する方法はありますか?

0 投票する
1 に答える
1113 参照

c++ - Lua API プッシュ ユーザーデータ

コンポーネント システムにスクリプト機能を追加しようとしています。もちろん、各コンポーネントには、親アクタへのアクセスを保持する「親」フィールドがあります。Lua から C++ メソッドにアクセスできるようにコードを記述できますが、actor などのカスタム ユーザーデータを返したいときに行き詰まりました。メソッド getParent() があり、Actor のユーザーデータを返したいので、Lua コードを次のように記述します。

どうすればこれを達成できますか?ライトユーザーデータで?または、getParent が呼び出されたときに、新しいユーザーデータを作成し、そのポインターを元のユーザー データに向けますか?

0 投票する
1 に答える
136 参照

c++ - Lua スクリプトでの C++ オブジェクトの使用

lua スクリプトで C++ オブジェクトを使用するにはどうすればよいですか?

クラスの例:

luaでの使用例(必要なものです):

ありがとう!

0 投票する
1 に答える
379 参照

c++ - プロパティとメソッドを作成する Lua C++

これは説明がややこしく、ドキュメントやネット上のどこにもこれについて何も見つからなかったので、これがこの質問に適した場所だと思いました.

C++ を使用して Lua のオブジェクトにプロパティとメソッドを登録しようとしています。

これは私がLuaで達成しようとしていることです:

C++ を使用して、例の最初の行を簡単に実現できます

:jump()しかし、メソッドとプロパティ.setXを作成するにはどうすればよい.getXですcreatePlayerか?

0 投票する
2 に答える
2520 参照

c++ - ./lua/addtest.lua:9: ローカル 'testobj' (ユーザーデータ値) のインデックス作成を試みます]]

test.exe は addTest.lua を呼び出しlua_testobjてテーブルに設定し、addTest.lua は testobj.dll を呼び出しますが、testobj.dll は "lua_testobj" を取得できません。

エラーメッセージは

addTest.lua:9 ローカル 'testobj' (ユーザーデータ値) のインデックス作成を試みます

  1. test.exe

    /li>
  2. addtest.lua コードは次のとおりです

    /li>
  3. testobj.dll のソース コードは次のとおりです。

    /li>
0 投票する
1 に答える
235 参照

c - lua の lightuserdata を使用してタイマー コールバックを登録する

C タイマー (アラームではない) をラップし、それを lua 内で使用して、1 秒が経過した後にトリガーされるコールバック関数を指定できるようにしたいと考えています。複数のタイマーを使用するため、タイマーIDとコールバックをテーブルに格納するのですが、「lua_rawset」呼び出し時にセグメンテーションフォルトが発生したため、stack_dumpを使用してluaスタックをチェックすると、「lua_rawget」でnilが返されました。 66(lr_register_timer、FIXME でマーク)、ここで何が問題なのですか? すみません、私の英語は下手です。乾杯。

ルアコード:

C コード: