Unity 中使用 Lua (ToLua)

简介

本文介绍 Unity 中使用 Lua 的方式。重点介绍 ToLua 的使用。在 Unity 中使用 Lua 能带来热更新的优势(参见Unity 中使用 Lua 的优劣简要分析。顺便推荐一下可用的 IDE:Lua IDE 比较和选择

Unity 中的 Lua 框架

uLua

外国作者。发布公告:https://forum.unity.com/threads/ulua-lua-for-unity.221310/

uLua官网 http://www.ulua.org/download.html

uLua 是 Lua + LuaJIT + LuaInterface 的集合,Unity 的 lua 插件, AssertStore 已经下架。 C# 调用 lua 脚本和从 lua 脚本中访问 C# 对象都方便.通过为每个平台单独构建 Plugin,实现对 iOS, Android 和其他平台的分别支持。 支持反射 + wrap方式。众多人维护,原作者是老外,蒙哥给它做了cstolua,让它变得更快8

SimpeFramework_NGUI/UGUI:基于ulua的框架,这个大家都很熟悉了,给大家一个ulua如何使用演示。

toLua

toLua是由以前的uLua发展过来的

继续更新的仓库 https://github.com/topameng/tolua 到今天现在依然活跃更新。而且有示例的游戏框架 https://github.com/jarjin/LuaFramework_UGUI (基于uGUI+tolua的简单游戏框架 http://ulua.org/)

201610停止更新的仓库 https://github.com/jarjin/uLua (基于cstolua的修改版uLua)。

tolua:不支持反射(暂时) + wrap方式。虽然ulua之前是最快的,但tolua#效率比ulua还要高。

https://github.com/topameng/tolua/blob/master/Assets/ToLua/Examples/README.md
https://github.com/jarjin/LuaFramework_UGUI

https://github.com/woshihuo12/UnityHello

https://github.com/zuig/UnityToolYK
https://github.com/zuig/MessageMechanism
一个简单的游戏框架:Lua相关 https://blog.csdn.net/husheng0/article/details/79434241

其他

还有 sLua, xLua, MoonSharp 等,还没进行细致研究,先不谈。

ToLua 使用

Assets/Source/Generate 是用来保存 tolua 生成的可供 lua 调用的 C# 类的绑定类,Assets/Editor/Custom/CustomSettings.cs 里面修改

Assets/ToLua 目录下是 tolua 框架最为核心的一些库,当然按照我们项目的规则;外部引入的第三方插件资源主要放在 Assets/ThirdParty 目录中,这里我们我们直接将整个 ToLua 目录移动到第三方插件目录,然后需要修改几个地方:LuaConst.cs CustomSettings.cs

参考资料

  1. Unity中集成Lua初探
  2. Unity 项目中怎样正确的使用 Lua?
  3. 用好Lua+Unity,让性能飞起来——Lua与C#交互篇
  4. Unity中SLua、Tolua、XLua和ILRuntime效率评测
  5. 如何评价腾讯在Unity下的xLua(开源)热更方案?
  6. LuaComponent: Unity中另类的使用Lua的一种方式
  7. ToLua源码分析:启动流程
  8. uLua/cstolua与tolua #的区别