lua按钮unity_【unity游戏开发】tolua学习-C#和Lua的交互细节

本文介绍了Unity游戏中C#与Lua交互的细节,包括C#如何调用Lua文件,通过tolua.dll实现两者之间的通信。同时,文章探讨了Lua调用C#的方法,如生成wrap文件和使用Lua虚拟机进行方法绑定。最后,文章提到了ObjectTranslator在交互中的作用,以及如何优化lua和C#的交互以提高性能。
摘要由CSDN通过智能技术生成

前言用了2年多的Lua了,然而,却不知道unity的C#是怎么调用到Lua的细节和底层原理,特此学习一下。

先讲讲toluatolua#是Unity静态绑定lua的一个解决方案,它通过C#提供的反射信息分析代码并生成包装的类。它是一个用来简化在C#中集成lua的插件,可以自动生成用于在Lua中访问Unity的绑定代码,并把C#中的常量、变量、函数、属性、类以及枚举暴露给Lua。

它是从cstolua衍变而来。从它的名字可以看出,它是集成了原来的tolua代码通过二次封装写了一个C#与tolua(c)的一个中间层。

下面详细介绍一下C#和Lua的交互细节

一、C#调用Lua

C# 调用Lua文件

1.1 编译tolua.dll

先上一下unity C#和lua交互的流程图,我们项目用的是tolua,unity C#先是生成tolua C#(warp文件),然后通过这些自动生成的tolua C#和tolua C交互。

tolua C 起到承上启下的作用,是C#和lua的中间层,在和C#交互方面,作为非c#托管代码,会提供一些函数让c# DllImport,c#会通过Marshal等与非托管代码交互

还有一些lua的扩展库,比如 cjson、LuaSocket、sqlite3、lpeg、bit、pbc等手机游戏常用库,这些库扩展了lua的能力,具体编译过程见 如何编译各平台使用的库-以编译tolua为例 这边不足赘述。windows平台叫做tolua.dll,

android叫做libtolua.so,

mac平台叫tolua.bundle,

而iOS平台由于不允许使用动态库,所以会编译成静态库libtolua.a。

编译出tolua.dll,复制到unity的Plugins文件夹下,然后就可以在C#层以DllImport导入接口,然后就可以在C#层调用到C层的方法了。

1.2 C#调用Lua文件

//C# 层调用 lua层 LuaState m_LuaState= new LuaState();

//手动添加一个lua文件搜索地址 m_LuaState.AddSearchPath(string.Format(&

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值