导航

toLua文件夹结构

Posted on 2022-02-26 22:31  Caiger  阅读(129)  评论(0编辑  收藏  举报

写在前面

  • 本文是我对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。