Unity3D开发小贴士(四)调用Lua脚本

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();
	}
}


将Test脚本挂在到场景中的对象上,点击运行,就可以看到打印出了“Hello lua”。
这里需要用到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,
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值