写在前面
- 本文是我对toLua(1.0.8.591版本)文件夹内容理解的记录。
文件夹结构
总览
- 下图是toLua的Unity工程视图:
BaseType
- 基础类型的Wrap文件,有些是自动生成(即用反射生成的)的,有些是作者准备的。
Core
- 核心,作者为了让Lua能联系上C#而准备的框架内容:
- 比如LuaAttribute.cs就记着标签,有些标签是固定要写的,有些标签是为了导出方便写的;
- 比如LuaBaseRef.cs即作者设计的Lua基类,它的实现成员如下图;在断点查GC时经常会跳到这里来看计数;
- 翻代码时最常翻到的是LuaState.cs、toLua.cs。
Editor
- 编辑器用代码,编辑器如下图:
- ToLuaMenu.cs是编辑器功能区,ToLuaExport.cs是代码模板,Extend文件夹没看到在哪里用。
Example
- 示例区。
- 工作项目常把它删了,要看示例的话(比如:不知道清理代码怎么写)还得回来找。
Injection
Lua
- toLua的Lua脚本们,除了tolua.lua,其他都是工具的lua脚本。tolua.lua其实也只是负责require一些常用脚本,也不能算纯纯的lua入口。
- Build.bat的功能是把lua脚本打成.bytes文件,可删,因为工作项目用不到,工作项目会写专门的打包脚本处理这部分功能。
Misc
- 杂项,这里放的所有文件都是可用可不用的:
- LuaClient:有些工程(比如LuaFramework_UGUI)会直接拿它当toLua启动器,自己写工程的话当然可以写别的启动器。
- LuaCoroutine:协程。
- LuaLooper:Mono的那堆更新函数XXXUpdate()。
Reflection
- 要在Lua里用反射而准备的C#功能代码,可见作者提供的示例22_Reflection。