|
在ToLua的实际使用中,我们不可能只在lua脚本中使用unity内置的类方法,也有可能使用到自己写的C#类或者方法,那么怎么实现呢?这个时候就需要用到Wrap数据绑定了,我们可以自己一点点写绑定,也可以直接使用内置工具去实现。
步骤如下:
1.写出自己的C#类结构;- using System;using System.Collections;namespace HYX
- {publicclassMyClass{publicconststring name ="huangyuxiang";}}
复制代码 2.开始绑定数据,打开绑定类CustomSettings,并将自己刚刚写的MyClass类绑定进去。
很简单,这样就绑定好了,接下来我们使用工具去生成绑定实现类。
a.点击上面的菜单栏 Lua -> Clear wrap files 去清空之前的绑定文件。
b.点击上面的菜单栏 Lua -> GenerateAll 开始生成绑定文件。
绑定完成后我们可以在Source->Generate文件夹中看见多了一个类HYX_MyClassWrap,这个就是Tolua帮我们生成的绑定类文件,大家可以打开看一下。- //this source code was auto-generated by tolua#, do not modify itusing System;using LuaInterface;publicclassHYX_MyClassWrap{publicstaticvoidRegister(LuaState L){
- L.BeginClass(typeof(HYX.MyClass),typeof(System.Object));
- L.RegFunction("New", _CreateHYX_MyClass);
- L.RegFunction("__tostring", ToLua.op_ToString);
- L.RegVar("name", get_name,null);
- L.EndClass();}[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]staticint_CreateHYX_MyClass(IntPtr L){try{int count = LuaDLL.lua_gettop(L);if(count ==0){HYX.MyClass obj =newHYX.MyClass();
- ToLua.PushObject(L, obj);return1;}else{return LuaDLL.luaL_throw(L,"invalid arguments to ctor method: HYX.MyClass.New");}}catch(Exception e){return LuaDLL.toluaL_exception(L, e);}}[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]staticintget_name(IntPtr L){try{
- LuaDLL.lua_pushstring(L, HYX.MyClass.name);return1;}catch(Exception e){return LuaDLL.toluaL_exception(L, e);}}}
复制代码接下来就开始说一下怎么去使用了,新建一个文本文件,重命名为ScriptsFromFile.lua,打开编辑;
- print("test data1 -- >"..HYX.MyClass.name)--打印绑定的HYX命名空间下的MyClass类下的name变量。
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|