問題タブ [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.
lua - 必要なモジュールの Lua レジストリ
int luaopen_foo(lua_State*)
呼び出し状態のレジストリに採用されているモジュールでアクセスされる一時的な状態のレジストリにキーが設定されていますか?
たとえば、次のモジュールがあるとします。
そして、このモジュールは lua コードに必要です:
foo
状態からのレジストリのキーはstate
、呼び出し元の状態からレジストリに採用されていますか?
c - Lua : C API からの新機能
ゲーム エンジンのスクリプティング レイヤーに取り組んでいます。現在、スクリプトをクラスとして使用して、new という名前の「テーブル」にメソッドを追加しています。この関数は、基本的にクラスのインスタンス化されたコピーを作成しました。スクリプトのインスタンスが必要な場合は、C API からこの関数を呼び出します。
私の質問は次のとおりです。上記の Lua コードを C に移動して、このシステム用に作成するすべてのスクリプト ファイルに追加する必要がないようにするにはどうすればよいですか?
c - C でネストされた Lua メタテーブル
3D シーンで、Lua を使用して移動したい位置を持つオブジェクトがあります。
例えば。box.position.x = 10
ボックスにはメタテーブル ("Object") があり、位置 ("Vec") もあります。オブジェクトには__newindex
、__index
C 関数を呼び出すための と がそれぞれ設定されてNewIndexObject
いIndexObject
ます。Vec (NewIndexVec
およびIndexVec
) と同じです。
オブジェクトには ID があるため、シーンに保存されているリストで識別できbox.position
ます。アクセスされたときにすべて問題なく、C 関数 IndexObject が呼び出され、スタックから ID を抽出できます。box.position.x = 10
「NewIndexVec」が実行されたときです。が呼び出され、スタック上の唯一のものは {table, x, 10} であるため、オブジェクトを識別して x 位置を変更する方法はありません。
値をローカル状態にプッシュする方法はありますか? ヘルプ!
更新:コードを可能な限り要約した以下で、すぐに返信していただきありがとうございます。このコードを実行すると動作するように見えますが、行き詰まっているところにコメントがあります。配列の最初のオブジェクトを取得しているだけですが、ID で選択する必要があります。よろしくお願いします
c++ - Lua C APIを使用して.luaスクリプトのすべてのテーブル名のリストを取得するにはどうすればよいですか?
次のようなluaファイルがあります。
ファイルで定義されたすべてのテーブルの名前を含む std::vector を取得したい: {"tableA", "tableB", "tableC"}
Lua C API でこれを行うにはどうすればよいですか?
lua - luaL_loadbuffer は 1 回の呼び出しで複数のファイルをロードできますか?
経由でLuaファイルをロードする方法を知っていますluaL_loadbuffer
。現在、100 を超える多くの Lua ファイルがあります。読み込みプロセスを高速化する方法を考えています。私が考え出した1つの方法は、すべてのファイルを1つにまとめてから、このファイルを次のようにロードすることですluaL_loadbuffer
(いくつかのテストを行いましたが、構文エラーが返されましたluaL_loadbuffer
)。誰かがこの方法を使用したことがありますか? または、読み込みを高速化する他の方法はありますか?
c++ - Lua API プッシュ ユーザーデータ
コンポーネント システムにスクリプト機能を追加しようとしています。もちろん、各コンポーネントには、親アクタへのアクセスを保持する「親」フィールドがあります。Lua から C++ メソッドにアクセスできるようにコードを記述できますが、actor などのカスタム ユーザーデータを返したいときに行き詰まりました。メソッド getParent() があり、Actor のユーザーデータを返したいので、Lua コードを次のように記述します。
どうすればこれを達成できますか?ライトユーザーデータで?または、getParent が呼び出されたときに、新しいユーザーデータを作成し、そのポインターを元のユーザー データに向けますか?
lua - C lua 関数のクラッシュ
package.loadlib
関数を使用して Lua にロードする dll として、lua 用の C モジュールを作成しました。このモジュールはluaL_loadstring
、文字列からいくつかの lua コードを実行するために使用することになっています。私の lua スクリプトは、自分でコーディングしたのではないアプリケーションによって実行され、私のモジュールはアプリケーションの機能を拡張することになっています。luaL_loadstring
および結果を使用するとlua_pcall
、アプリケーションはいくつかの文字列、特にアプリケーションによって定義されたいくつかの C 関数を呼び出す関数を使用する文字列でクラッシュします (C で定義されたすべての関数でクラッシュするわけではなく、一部の関数でのみクラッシュすることに注意してください)。クラッシュしない文字列では問題なく動作し、クラッシュする文字列では loadstring からの結果を lua にプッシュして実行し、コード自体が有効であることを示します。
これは私がそれを呼び出す方法です:
これらのクラッシュの原因について何か提案はありますか?