C#でLua: LuaInterfaceの後継NLua
C#でLuaを利用するためのライブラリを探していたところ、LuaInterfaceというものが一般的に使われているということがわかった。
公式サイトに行ってみたところ、LuaInterfaceからforkされたNLuaというライブラリを作者がおすすめしていたので、そちらを使ってみることとした。プロジェクトページによると、Android/iOS/WPなど様々な環境で動作するらしい。
ダウンロード
NLua/NLua · GitHub
README.mdに記載されているダウンロードボタンからダウンロードすれば良い
参照の追加
Visual Studio 2012: プロジェクト→参照の追加→参照
基本的な使い方
基本的にLuaInterfaceと同様の使い方が可能のようだ。
おさきまっくら [C#][Lua]Luaのあれこれおぼえがき
2012-03-31 - 結果だけでなく過程も見てください
ただ一点注意として、Lua5.2を利用しているということが挙げられる。
ネット上にある多くのLuaInterfaceに関する記事はLua5.1向けに書かれており、そのままだと動かないことがある。
Lua5.1とLua5.2の違いについては以下のサイトを参照
Lua 5.1とLua5.2の違い - エンジニアのソフトウェア的愛情
staticメゾットの登録
あるクラスのstaticメゾットを登録したい場合以下のようにすれば良い。
オーバーロードがあるメゾットの登録
オーバーロードがあるメゾットはGetMethodの第二引数に対象メゾットの引数のタイプを指定してあげて特定すれば良い
モジュール
Lua5.2からはmoduleというものが使えなくなったらしい。
少し調べてみたが、代替機能が見つからなかったので、次のサイトを参考にmoduleを代替した。
Luaのモジュールを穴が空くまで見つめてみる - プログラミングの魔物
読み込み先ディレクトリを追加するにはpackage.pathを使う
requireのパスあれこれ | -闘いたい過去-
(注) ただし上記のサイトに書かれてるobj.getinfoはLua5.2で動かないっぽい