C#でLua: LuaInterfaceの後継NLua

C#Luaを利用するためのライブラリを探していたところ、LuaInterfaceというものが一般的に使われているということがわかった。

luainterface - A library for integration between the Lua language and Microsoft .NET platform's Common Language Runtime (CLR) - Google Project Hosting

公式サイトに行ってみたところ、LuaInterfaceからforkされたNLuaというライブラリを作者がおすすめしていたので、そちらを使ってみることとした。プロジェクトページによると、Android/iOS/WPなど様々な環境で動作するらしい。

NLua/NLua · GitHub

ダウンロード

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で動かないっぽい

とりあえずこんな感じで使ってる