問題タブ [lua-api]

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 投票する
1 に答える
121 参照

lua - 必要なモジュールの Lua レジストリ

int luaopen_foo(lua_State*)呼び出し状態のレジストリに採用されているモジュールでアクセスされる一時的な状態のレジストリにキーが設定されていますか?

たとえば、次のモジュールがあるとします。

そして、このモジュールは lua コードに必要です:

foo状態からのレジストリのキーはstate、呼び出し元の状態からレジストリに採用されていますか?

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

c - Lua : C API からの新機能

ゲーム エンジンのスクリプティング レイヤーに取り組んでいます。現在、スクリプトをクラスとして使用して、new という名前の「テーブル」にメソッドを追加しています。この関数は、基本的にクラスのインスタンス化されたコピーを作成しました。スクリプトのインスタンスが必要な場合は、C API からこの関数を呼び出します。

私の質問は次のとおりです。上記の Lua コードを C に移動して、このシステム用に作成するすべてのスクリプト ファイルに追加する必要がないようにするにはどうすればよいですか?

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

c - C でネストされた Lua メタテーブル

3D シーンで、Lua を使用して移動したい位置を持つオブジェクトがあります。

例えば。box.position.x = 10

ボックスにはメタテーブル ("Object") があり、位置 ("Vec") もあります。オブジェクトには__newindex__indexC 関数を呼び出すための と がそれぞれ設定されてNewIndexObjectIndexObjectます。Vec (NewIndexVecおよびIndexVec) と同じです。

オブジェクトには ID があるため、シーンに保存されているリストで識別できbox.positionます。アクセスされたときにすべて問題なく、C 関数 IndexObject が呼び出され、スタックから ID を抽出できます。box.position.x = 10「NewIndexVec」が実行されたときです。が呼び出され、スタック上の唯一のものは {table, x, 10} であるため、オブジェクトを識別して x 位置を変更する方法はありません。

値をローカル状態にプッシュする方法はありますか? ヘルプ!

更新:コードを可能な限り要約した以下で、すぐに返信していただきありがとうございます。このコードを実行すると動作するように見えますが、行き詰まっているところにコメントがあります。配列の最初のオブジェクトを取得しているだけですが、ID で選択する必要があります。よろしくお願いします

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

c++ - Lua C APIを使用して.luaスクリプトのすべてのテーブル名のリストを取得するにはどうすればよいですか?

次のようなluaファイルがあります。

ファイルで定義されたすべてのテーブルの名前を含む std::vector を取得したい: {"tableA", "tableB", "tableC"}

Lua C API でこれを行うにはどうすればよいですか?

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

lua - luaL_loadbuffer は 1 回の呼び出しで複数のファイルをロードできますか?

経由でLuaファイルをロードする方法を知っていますluaL_loadbuffer。現在、100 を超える多くの Lua ファイルがあります。読み込みプロセスを高速化する方法を考えています。私が考え出した1つの方法は、すべてのファイルを1つにまとめてから、このファイルを次のようにロードすることですluaL_loadbuffer(いくつかのテストを行いましたが、構文エラーが返されましたluaL_loadbuffer)。誰かがこの方法を使用したことがありますか? または、読み込みを高速化する他の方法はありますか?

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

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

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

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

0 投票する
0 に答える
681 参照

lua - C lua 関数のクラッシュ

package.loadlib関数を使用して Lua にロードする dll として、lua 用の C モジュールを作成しました。このモジュールはluaL_loadstring、文字列からいくつかの lua コードを実行するために使用することになっています。私の lua スクリプトは、自分でコーディングしたのではないアプリケーションによって実行され、私のモジュールはアプリケーションの機能を拡張することになっています。luaL_loadstringおよび結果を使用するとlua_pcall、アプリケーションはいくつかの文字列、特にアプリケーションによって定義されたいくつかの C 関数を呼び出す関数を使用する文字列でクラッシュします (C で定義されたすべての関数でクラッシュするわけではなく、一部の関数でのみクラッシュすることに注意してください)。クラッシュしない文字列では問題なく動作し、クラッシュする文字列では loadstring からの結果を lua にプッシュして実行し、コード自体が有効であることを示します。

これは私がそれを呼び出す方法です:

これらのクラッシュの原因について何か提案はありますか?