Vscode+Unity断点调试三部曲(一):xlua环境搭建

断点调试三部曲(一):xlua环境搭建

  • Unity新建工程,工程名不可以是中文,版本无所谓
  • 下载Xlua插件,版本无所谓
  • 下载Vscode,本教程用的是1.44.2版本,版本过低会不兼容emmylua这个插件
  • 开始搭建环境
  • HOTFIX_ENABLE
  • 新增的Hotfix Inject In Editor,在该教程中其实没用,当C#的类被打上[XLua.Hotfix]标签,并且修改了该类的时候,才需要用该功能,意为标签注入
  • 在该教程中,我们只需要用,生成代码,第一次用xlua的功能才需要点击一下,作用类似关联xlua工具
  • 开始测试
    • 一个Test_C.cs文件,随便挂载到场景中
    • 一个Test_L.lua文件,放在Asset/LuaScripts目录下
    • 运行
    • 得到输出结果就是成功了
《Test_C.cs》
using System.IO;
using UnityEngine;
using XLua;
public class Test_C : MonoBehaviour {
    void Start ()
    {
        LuaStart();
    }
    LuaFunction func;
    LuaEnv env;
    //启动lua虚拟机并加载lua文件
    void LuaStart()
    {
        Debug.Log("启动lua");
        float t = Time.realtimeSinceStartup;//用于计算lua虚拟机耗时
        env = new LuaEnv();//启动lua虚拟机
        env.AddLoader(CustomLoader);//AddLoader()修改默认路径,参数是路径
        env.DoString(@"require 'Test_L'");//加载"Test_L.lua"文件
        func = env.Global.Get<LuaFunction>("OnStart");//获取到OnStart方法
        func.Call(gameObject);//调用OnStart方法,传入参数
        Debug.Log("lua虚拟机加载完毕 耗时:" + (Time.realtimeSinceStartup - t) + "   s");
    }
    //修改lua文件的默认路径
    private static byte[] CustomLoader(ref string filename)
    {
        filename = "LuaScripts/" + filename.Replace('.', '/');
        filename = "Assets/" + filename + ".lua";
        return File.ReadAllBytes(filename);
    }
    void OnApplicationQuit()
    {
        env.Dispose();//关闭虚拟机
    }
}
 
《Test_L.lua》
function OnStart(gObj)
        print("测试OnStart函数执行")
end

 

posted @ 2020-05-09 15:09  枫树上的栀子花  阅读(2452)  评论(0编辑  收藏  举报