Unity3D开发小贴士(三)愉快的使用Lua开发中介绍了如何在Unity上利用ToLua插件来进行lua脚本开发。那么本文就介绍一下如何在C#脚本中调用Lua。
首先一个最简单的调用:
using UnityEngine;
using LuaInterface;
public class Test : MonoBehaviour {
public void Start()
{
LuaState state = new LuaState ();
state.Start ();
state.DoString ("print(\"Hello lua\")");
state.Dispose();
}
}
这里需要用到LuaInterface命名空间,需要new一个LuaState,并执行Start()方法,使用DoString来运行Lua脚本,最后不要忘了Dispose。
理论上来讲,可以使用DoString执行任何Lua脚本,只要传入的字符串足够长。不过这样也就没有使用Lua脚本的意义了。
我们可以使用DoFile方法来执行lua文件。
例如一个名为Test.lua的文件中包含下列Lua代码:
print("Hello lua in file")
我们在state.Start()和state.Dispose()之间添加:
state.DoFile ("Test1.lua");
就可以打印出“Hello lua in file”。
但是只是执行文件中的代码意义并不是很大,我们希望可以有选择的执行文件中的某个函数。
例如lua文件中添加函数:
function testToLua1(t)
print(t)
return {t + 1 , t - 2 , t * 3, t / 4}
end
传入一个数字t,然后对它分别进行四则运算,返回一个数组形式的table。
那么在Test.cs中添加:
LuaFunction func1 = state.GetFunction ("testToLua1");
func1.BeginPCall ();
func1.Push (1024);
func1.PCall ();
if (state.lua_istable (-1)) {
int n = state.LuaGetN (-1);
for (int i = 0; i < n; i++) {
state.LuaRawGetI (-1,