LuaBind を使用して自分のゲームに Lua スクリプトを実装していますが、明確でないことの 1 つは、ゲーム内でスクリプトをライブでリロードするロジスティクスです。
現在、LuaBind C++ クラスluabind::object
を使用して、Lua コールバックへの参照を、それらを使用するクラスに直接保存しています。次にluabind::call_function
、そのオブジェクトを使用して、C++ コードから Lua コードを呼び出すことができます。
これはまだテストしていませんが、スクリプトをリロードすると、すべての関数が再定義されると思いますが、古い関数への参照はluabind::object
、C++ コードによって保持される形式で引き続き存在します。ゲーム内のスクリプト フックごとに手動で管理する必要なく、古いものを新しいものに交換できるようにしたいと考えています。
プロセスが機能するようにこれを変更するにはどうすればよいですか?
私が最初に考えたのは、関数への参照を直接保存するのではなく、代わりに関数名を保存し、呼び出すたびに名前で関数を取得することです。より良いアイデアを探しています!