Unity 初次使用ulua,熟悉C#和Lua交互
说明
一直都想实现Unity的热更新,但因为种种原因搁置了。前段时间学习了一下Lua的基本语法,发现这门语言还真是简单易学。于是实现Unity热更新的想法又开始蠢蠢欲动了…
看了一些大佬们的博客,发现C#和Lua之间交互的框架还挺多,思来想去最后决定使用ulua框架。
选择ulua框架的原因是它全平台支持,而且通过LuaJit进行加速,效率上不会太低,而且使用简单,导入package就可以编写代码了。不过ulua的作者只提供了ulua的插件包,并没有提供整套插件源码,但对于我这种新手来说也没什么影响…反正源码也看不懂,好用就行哈哈哈哈哈哈
我主要参考的是这篇博客,整理得非常详细——[整理]Unity3D游戏开发之Lua
下载
首先,当然要先下载ulua包,我实在这个网站上下载的——链接
这个网站里面的网盘链接已经失效了,我是通过GitHub下载的
附上GitHub地址——链接
不知道是不是网络的问题,download总是失败,所以最后我选择拷贝HTTPS链接然后Clone
Clone完成后,有这些东西:
导入
新建或者打开一个Unity项目
打开Unity项目文件夹所在位置,原封不动地将下载下来的所有文件拷贝到了项目目录下
然后会弹出有同名文件的提示,基本都是一些ProjectSettings文件夹下的东西,我选择了跳过
好了,切换到Unity下时发现正在加载导入的资源,过了一会儿之后导入成功
可以在Unity窗口下的Assets下也看到LuaFramework和Plugins也导入了
嗯,接下来试一试能不能用
C#和Lua交互
参考了ulua的文档——链接
在我在自己的Assets文件夹下的Scripts文件夹下新建了一个CSharpLuaTest.cs文件,将这个C#脚本绑在摄像头上,开始编写C#代码。
看文档说是用LuaScriptMgr更加高效,因为使用了去反射机制(不懂2333),但是我自己写的时候发现没有这个LuaScriptMgr类了,于是用的是LuaState类创建lua虚拟机。
Dostring
通过Dostring函数可以直接执行string中