找回密码
 立即注册
查看: 243|回复: 0

ToLua 入门08_数据绑定

[复制链接]
发表于 2022-4-25 13:08 | 显示全部楼层 |阅读模式
在ToLua的实际使用中,我们不可能只在lua脚本中使用unity内置的类方法,也有可能使用到自己写的C#类或者方法,那么怎么实现呢?这个时候就需要用到Wrap数据绑定了,我们可以自己一点点写绑定,也可以直接使用内置工具去实现。
步骤如下:
1.写出自己的C#类结构;
  1. using System;using System.Collections;namespace HYX
  2. {publicclassMyClass{publicconststring name ="huangyuxiang";}}
复制代码
2.开始绑定数据,打开绑定类CustomSettings,并将自己刚刚写的MyClass类绑定进去。

很简单,这样就绑定好了,接下来我们使用工具去生成绑定实现类。
a.点击上面的菜单栏 Lua -> Clear wrap files 去清空之前的绑定文件。
b.点击上面的菜单栏 Lua -> GenerateAll 开始生成绑定文件。
绑定完成后我们可以在Source->Generate文件夹中看见多了一个类HYX_MyClassWrap,这个就是Tolua帮我们生成的绑定类文件,大家可以打开看一下。
  1. //this source code was auto-generated by tolua#, do not modify itusing System;using LuaInterface;publicclassHYX_MyClassWrap{publicstaticvoidRegister(LuaState L){
  2.                 L.BeginClass(typeof(HYX.MyClass),typeof(System.Object));
  3.                 L.RegFunction("New", _CreateHYX_MyClass);
  4.                 L.RegFunction("__tostring", ToLua.op_ToString);
  5.                 L.RegVar("name", get_name,null);
  6.                 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();
  7.                                 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{
  8.                         LuaDLL.lua_pushstring(L, HYX.MyClass.name);return1;}catch(Exception e){return LuaDLL.toluaL_exception(L, e);}}}
复制代码
    接下来就开始说一下怎么去使用了,新建一个文本文件,重命名为ScriptsFromFile.lua,打开编辑;
  1. print("test data1 -- >"..HYX.MyClass.name)--打印绑定的HYX命名空间下的MyClass类下的name变量。
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-5-3 17:27 , Processed in 0.240486 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表