Skip to content
高凯 edited this page Dec 31, 2017 · 1 revision

编辑器工具

初始化
  Window -> Lua设置编辑器 -> Lua项目初始化

  初始化所做的事情:
  * 创建导出列表文件,用来声明哪些类会被Lua调用,位置在 Assets/Script/UI/Editor/Lua/LuaExportList.cs
  * 创建空LuaBinder文件,该文件会自动生成
  * 把框架自带的Lua库复制到Resources/LuaLib
    1. LuaDataHelper
    2. LuaStatusManager
    3. LuaUIManager
    4. LuaUpdater
    5. LuaEventDispatcher
    6. LuaJson
    7. LuaPrintTable
  * 自动生成 Lua配置文件,用于记录哪些文件是Lua文件
  * 创建Lua启动文件,包括一个lua主函数,游戏开始时会调用它
  * 添加预编译指令 USE_LUA
  * Warp初始化

生成LuaWarp文件
  Lua设置编辑器 -> 重新生成Lua Warp脚本

清空LuaWarp文件
  Lua设置编辑器 -> 清除Lua Warp脚本

重新生成打包配置
  Lua设置编辑器 -> 自动生成Lua配置文件

API

LuaManager
static void Init() LuaManager初始化(会在ApplicatioManager中自动调用)
static void LoadLua() 加载Lua文件
static void DoLuaFile(string fileName) 加载指定的Lua文件
static void LaunchLua() 启动Lua

LuaStatus
LuaFunction GetFunction(string name, bool beLogMiss = true) 获取一个Lua函数以备调用

示例

public class LuaTestStstus : IApplicationStatus 
{
    public override void OnEnterStatus()
    {
        LuaManager.LoadLua();
        LuaManager.LaunchLua();
    }
}

public static void LaunchLua()
{
    //Debug.Log("LaunchLua");
     try
    {
       s_state.GetFunction("Main").Call();
        s_isUpdate = true;
       s_updateFunction = s_state.GetFunction("LuaUpdate");
    }
    catch (Exception e)
   {
       Debug.LogError("Lua Lunch Execption " + e.ToString());
   }
}

使用Lua编写界面

  * 在UI设置编辑器勾选使用Lua
  * 在自动生成的Lua文件中重写方法,位置在Resources/Lua/UI/下,格式是 "Lua" + UIWindowName + ".txt"
    1. OnInit
    2. OnOpen
    3. OnClose
    4. EnterAnim
    ...

提示

  * 框架里集成的是ToLua,删掉了ToLua中对Vector3等的一些优化
  * 每次新增Lua文件,记得要重新生成Lua设置文件和更新打包设置
  * 如果修改代码之后Warp报错可以清空Warp文件重新生成
  * 常见的Lua启动失败原因有
    1. USE_LUA 宏未设置
    2. 没有Warp或者Warp文件报错
    3. 没有重新生成Lua配置文件
  * C#和Lua互相调用的时候不要直接使用LuaTable类,建议使用Json传递消息
  * 所有的Lua文件在框架里后缀都使用.txt   

Clone this wiki locally