xlua入门(3)c#调用Lua脚本
2018-02-27 23:30
411 查看
xlua入门(3)c#调用Lua脚本
using UnityEngine; using System.Collections; using XLua; public class InvokeLua : MonoBehaviour { //创建一个接口用于映射lua里的table //也可以用clas或者struct, Dictionary<>, List<> //各个映射的优劣可以看下XLUA教程文档 [CSharpCallLua] public interface ICalc { int Add(int a, int b); int Mult { get; set; } } //映射Lua中的方法 [CSharpCallLua] public delegate ICalc CalcNew(int mult, params string[] args); private string script = @" local calc_mt = { __index = { Add = function(self, a, b) return (a + b) * self.Mult end } } Calc = { New = function (mult, ...) print(...) return setmetatable({Mult = mult}, calc_mt) end } "; // Use this for initialization void Start() { LuaEnv luaenv = new LuaEnv(); Test(luaenv);//调用了带可变参数的delegate,函数结束都不会释放delegate,即使置空并调用GC luaenv.Dispose(); } void Test(LuaEnv luaenv) { luaenv.DoString(script); //获得Calc表中的New方法,映射到委托 CalcNew calc_new = luaenv.Global.GetInPath<CalcNew>("Calc.New"); //运行委托获得设置元表过后的table,映射到接口,对应Add方法和Mult属性,设置Mult为10 ICalc calc = calc_new(10, "hi", "john"); //constructor Debug.Log("sum(*10) =" + calc.Add(1, 2)); //修改Mult calc.Mult = 100; Debug.Log("sum(*100)=" + calc.Add(1, 2)); } // Update is called once per frame void Update() { } }
相关文章推荐
- C#调用脚本语言(三)-- IronJS 与 IronLua 简单方法性能比较
- C#调用脚本语言(三)-- IronJS 与 IronLua 简单方法性能比较
- Redis进阶实践之八Lua的Cjson在Linux下安装、使用和用C#调用Lua脚本
- C#调用脚本语言(一)-- IronLua基本语法
- Redis进阶实践之八Lua的Cjson在Linux下安装、使用和用C#调用Lua脚本
- Lua脚本语言入门及魔兽争霸中的Lua函数调用
- Redis进阶实践之八Lua的Cjson在Linux下安装、使用和用C#调用Lua脚本(转载8)
- [Unity] .lua脚本调用C#方法的一小点坑
- c#调用脚本语言Lua——简单Demo
- C#调用脚本语言(三)-- IronJS 与 IronLua 简单方法性能比较
- c#调用脚本语言Lua——简单Demo
- c#调用脚本语言Lua
- Lua脚本语言入门(一)
- js脚本调用C#程序
- Lua脚本语言入门(目前魔兽使用的可以写在宏内的语言)转自中国Lua开发者
- C#调用Python脚本并使用Python的第三方模块
- Flash调用Lua脚本: 五
- Lua嵌入式脚本语言入门学习指导
- Lua脚本在C++下的舞步(入门指引)
- Lua脚本调用C函数小结