問題タブ [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.
lua - Lua メタテーブルで「メソッド」とインデックス演算子の両方を指定する
メソッドとインデックス演算子 (整数インデックスを使用) の両方をサポートするには、ユーザーデータ オブジェクトが必要です。関数を介してメソッドをシミュレートせずに、共通のメタテーブルでこれを達成する方法はありますか?
metatable(object).__index
実際のメソッドを含むテーブルとmetatable(metatable(object).__index).__index
、インデックス演算子を実装する関数に設定することにより、メタテーブルをチェーンしてみました。ただし、その関数は__index
、元のオブジェクトではなく、最初のテーブルを引数として呼び出されます。メタメソッドが関数の場合、元のオブジェクトを渡す方がはるかに理にかなっているから__index
です。とにかく、__index
関数内のメソッド名を明示的にチェックせずに、私が望むものを達成する方法はありますか?
c++ - Lua API プッシュ ユーザーデータ
コンポーネント システムにスクリプト機能を追加しようとしています。もちろん、各コンポーネントには、親アクタへのアクセスを保持する「親」フィールドがあります。Lua から C++ メソッドにアクセスできるようにコードを記述できますが、actor などのカスタム ユーザーデータを返したいときに行き詰まりました。メソッド getParent() があり、Actor のユーザーデータを返したいので、Lua コードを次のように記述します。
どうすればこれを達成できますか?ライトユーザーデータで?または、getParent が呼び出されたときに、新しいユーザーデータを作成し、そのポインターを元のユーザー データに向けますか?
c++ - Lua スクリプトでの C++ オブジェクトの使用
lua スクリプトで C++ オブジェクトを使用するにはどうすればよいですか?
クラスの例:
luaでの使用例(必要なものです):
ありがとう!
c++ - プロパティとメソッドを作成する Lua C++
これは説明がややこしく、ドキュメントやネット上のどこにもこれについて何も見つからなかったので、これがこの質問に適した場所だと思いました.
C++ を使用して Lua のオブジェクトにプロパティとメソッドを登録しようとしています。
これは私がLuaで達成しようとしていることです:
C++ を使用して、例の最初の行を簡単に実現できます
:jump()
しかし、メソッドとプロパティ.setX
を作成するにはどうすればよい.getX
ですcreatePlayer
か?
c++ - ./lua/addtest.lua:9: ローカル 'testobj' (ユーザーデータ値) のインデックス作成を試みます]]
test.exe は addTest.lua を呼び出しlua_testobj
てテーブルに設定し、addTest.lua は testobj.dll を呼び出しますが、testobj.dll は "lua_testobj" を取得できません。
エラーメッセージは
addTest.lua:9 ローカル 'testobj' (ユーザーデータ値) のインデックス作成を試みます
test.exe
/li>addtest.lua コードは次のとおりです
/li>testobj.dll のソース コードは次のとおりです。
/li>
c - lua の lightuserdata を使用してタイマー コールバックを登録する
C タイマー (アラームではない) をラップし、それを lua 内で使用して、1 秒が経過した後にトリガーされるコールバック関数を指定できるようにしたいと考えています。複数のタイマーを使用するため、タイマーIDとコールバックをテーブルに格納するのですが、「lua_rawset」呼び出し時にセグメンテーションフォルトが発生したため、stack_dumpを使用してluaスタックをチェックすると、「lua_rawget」でnilが返されました。 66(lr_register_timer、FIXME でマーク)、ここで何が問題なのですか? すみません、私の英語は下手です。乾杯。
ルアコード:
C コード: