在ToLua框架中,如何实现C语言的调用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计4184个文字,预计阅读时间需要17分钟。
Lua是目前国内使用最多的热更新语言,基于Lua的热更新框架也相当多。最近学习了一下ToLua的热更新框架,主要问题集中在以下方面:
Lua是目前国内使用最多的热更语言,基于Lua的热更框架也非常多,最近学习了一下ToLua的热更框架,主要使用的问题在于C#和Lua之间的互调,因此做一下学习记录以备后查。
所谓“互调”,当然要包括两个方面,一是通过C#调用Lua代码,二是通过Lua代码调用C#脚本,第二点还包括注册在C#脚本里的Unity物体。
1. ToLua的简单实现原理
ToLua框架主要是通过静态绑定来实现C#与Lua之间的交互的,基本原理是通过建立一个Lua虚拟机来映射C#脚本,然后再通过这个虚拟机来运行Lua脚本,Lua脚本在运行时可以通过虚拟机反过来调用C#脚本里注册过的物体,这种方式的优势在于比起使用反射的uLua来说效率更高。
ToLua框架下可以将实现分成三大部分:普通的Unity+C#部分、ToLua虚拟机部分和Lua脚本部分,结构见下图:
ToLua结构
目前国内需要热更的手游一般都将主要的逻辑框架和组件功能用C#实现,而具体功能和调用放在Lua中,因为C#是不能被打包进AssetBundle中的,所以无法通过AssetBundle对代码进行改动,但是Lua是即时编译型语言,并且可以被打包进入AssetBundle中,在需要修改简单功能时,将Lua代码通过AssetBundle进行更新即可。
2. ToLua的下载的安装
首先是下载地址:
ToLua
这是作者的github地址,进入以后点击下载Zip,完成后解压到自己需要的目录,再用Unity打开即可。
本文共计4184个文字,预计阅读时间需要17分钟。
Lua是目前国内使用最多的热更新语言,基于Lua的热更新框架也相当多。最近学习了一下ToLua的热更新框架,主要问题集中在以下方面:
Lua是目前国内使用最多的热更语言,基于Lua的热更框架也非常多,最近学习了一下ToLua的热更框架,主要使用的问题在于C#和Lua之间的互调,因此做一下学习记录以备后查。
所谓“互调”,当然要包括两个方面,一是通过C#调用Lua代码,二是通过Lua代码调用C#脚本,第二点还包括注册在C#脚本里的Unity物体。
1. ToLua的简单实现原理
ToLua框架主要是通过静态绑定来实现C#与Lua之间的交互的,基本原理是通过建立一个Lua虚拟机来映射C#脚本,然后再通过这个虚拟机来运行Lua脚本,Lua脚本在运行时可以通过虚拟机反过来调用C#脚本里注册过的物体,这种方式的优势在于比起使用反射的uLua来说效率更高。
ToLua框架下可以将实现分成三大部分:普通的Unity+C#部分、ToLua虚拟机部分和Lua脚本部分,结构见下图:
ToLua结构
目前国内需要热更的手游一般都将主要的逻辑框架和组件功能用C#实现,而具体功能和调用放在Lua中,因为C#是不能被打包进AssetBundle中的,所以无法通过AssetBundle对代码进行改动,但是Lua是即时编译型语言,并且可以被打包进入AssetBundle中,在需要修改简单功能时,将Lua代码通过AssetBundle进行更新即可。
2. ToLua的下载的安装
首先是下载地址:
ToLua
这是作者的github地址,进入以后点击下载Zip,完成后解压到自己需要的目录,再用Unity打开即可。

