これから、数回の渡り、アプリ開発で得たLuaの知見を共有していく。
今回は、Unity以外(というより、恐らくこっちがメジャー)でLuaを実行する方法を紹介。
〇LuaInterpreter
手っ取り早くスクリプト内容を簡単に見たいのであれば、Web上で動くLuaVMの環境を用意してくれているのでそこで試すといい。
https://www.lua.org/cgi-bin/demo
例えば、以下のコードを打ちこんで「run」ボタンを押せば、実行される
function CalcSet(a, b) return a+b, a-b, a*b, a/b end add, sub, mul, div = CalcSet(6, 2) print(add) print(sub) print(mul) print(div) ※出力は 8 4 12 3.0
これは、CalcSetに引数を渡すと、加算減算乗算除算を結果を返してくれて、それを表示するプログラムだ。
また、Windows環境で動くInterpreterも存在するので、興味があれば探してみるといい。
〇C++バインディング
何かの言語に実際に組み込んでみる場合は、まずはC++バインディングをお勧めする。
理由としては、
・実行できるアプリを動かすには、WindowsアプリケーションはC++で作るのが簡単
・Unityよりは、Luaバインディングがメジャーなので、情報が豊富
この辺りが理由だ。
実際、筆者もUnity(C#)でのバンディングを研究する前に、C++でLuaとのバインディングの仕組みを実際に動かし、勉強した。
その時の知見が、Unityへのバインディングをする際にも役に立った経緯がある。
ここで得てもらいたい考え方とは、LuaVMの大雑把な役割は、値のやり取りをスタックに積んでそれを操作するという実装になっているという事だ。 これを理解して使うのと使わないのでは、ただ使うだけだと恐らく問題に詰まった時の解決能力の差がかなりでると思う。