Unity 自定义快捷键--快捷键热更lua运行中代码

一、unity自定义快捷键:

1. % (ctrl on Windows, cmd on macOS), # (shift), & (alt). 

2. 使用方法:

 [MenuItem("AL/检查(修复)工具/Reload Lua &`", false, 14)]
    public static void ReloadLua()

二、C#调用ToLua代码

    //% (ctrl on Windows, cmd on macOS), # (shift), & (alt). 
    [MenuItem("AL/检查(修复)工具/Reload Lua &`", false, 14)]
    public static void ReloadLua()
    {
        // 调用lua的脚本
        LuaInterface.LuaState m_LuaState = LuaModule.Instance.GetLuaState();

        try
        {
            m_LuaState.DoFile("ReloadUtil.lua");
            LuaInterface.LuaFunction Update = m_LuaState.GetFunction("ReloadUtil.LuaHotUpdate");
            Update.Call();
            Update.Dispose();
            Update = null;
        }
        catch(System.Exception e)
        {
            UnityEngine.Debug.Log(e.ToString());
            throw;
        }
    }
  private void beginToLua(){
        LuaState lua = new LuaState ();
        lua.Start ();
        LuaBinder.Bind(lua);
        lua.AddSearchPath(luaDir);
        //加载MainView.lua文件
        lua.Require("MainView");
        //执行Main()方法
        LuaFunction initFunc = lua.GetFunction ("Main");
        //传参
        initFunc.Call (this.gameObject);
        initFunc.Dispose ();
        initFunc = null;
        //
}

1. 需要注意的几点:luaDir搜索路径自己要加上

2. 新建一个LuaState,然后Start,bind,添加搜索路径,最后导入需要的文件(可以用require,也可以用DoFile)

3. 那这个State就可以拿到方法,然后去Call拿到的方法,可以传参。

你可能感兴趣的:(工作杂谈,Lua热更)