ToLua 入门08_数据绑定

在ToLua的实际使用中,我们不可能只在lua脚本中使用unity内置的类方法,也有可能使用到自己写的C#类或者方法,那么怎么实现呢?这个时候就需要用到Wrap数据绑定了,我们可以自己一点点写绑定,也可以直接使用内置工具去实现。
步骤如下:
1.写出自己的C#类结构;

using System;
using System.Collections;

namespace HYX
{
    public class MyClass
    {
        public const string name = "huangyuxiang";
    }
}

2.开始绑定数据,打开绑定类CustomSettings,并将自己刚刚写的MyClass类绑定进去。

Wrap类绑定
很简单,这样就绑定好了,接下来我们使用工具去生成绑定实现类。
a.点击上面的菜单栏 Lua -> Clear wrap files 去清空之前的绑定文件。
b.点击上面的菜单栏 Lua -> GenerateAll 开始生成绑定文件。

绑定完成后我们可以在Source->Generate文件夹中看见多了一个类HYX_MyClassWrap,这个就是Tolua帮我们生成的绑定类文件,大家可以打开看一下。

//this source code was auto-generated by tolua#, do not modify it
using System;
using LuaInterface;

public class HYX_MyClassWrap
{
	public static void Register(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))]
	static int _CreateHYX_MyClass(IntPtr L)
	{
		try
		{
			int count = LuaDLL.lua_gettop(L);

			if (count == 0)
			{
				HYX.MyClass obj = new HYX.MyClass();
				ToLua.PushObject(L, obj);
				return 1;
			}
			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))]
	static int get_name(IntPtr L)
	{
		try
		{
			LuaDLL.lua_pushstring(L, HYX.MyClass.name);
			return 1;
		}
		catch (Exception e)
		{
			return LuaDLL.toluaL_exception(L, e);
		}
	}
}


  1. 接下来就开始说一下怎么去使用了,新建一个文本文件,重命名为ScriptsFromFile.lua,打开编辑;
print("test data1 -- >" ..HYX.MyClass.name) --打印绑定的HYX命名空间下的MyClass类下的name变量。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值