看完就会vscode+Lua断点调试,不在苦于Unity+Lua没得断点的苦恼

阅前提示

该篇文章为步骤教学型文章。作者阅读了网络中散布的关于lua断点的文章,苦于它们要不说的不清不楚,要不过于繁琐复杂。总结所得,一篇文章上手Lua断点。
适合人群:Unity+lua 使用者
阅读方式:步骤阅读


正文

环境

Vscode + Unity + ulua/tolua/slua …

Vscode

1.安装插件:Luaide-lite
看完就会vscode+Lua断点调试,不在苦于Unity+Lua没得断点的苦恼_第1张图片
这里说句题外话,这个插件强烈推荐,非常适合vscode使用者来写lua

2.创建LuaDebug
看完就会vscode+Lua断点调试,不在苦于Unity+Lua没得断点的苦恼_第2张图片
看完就会vscode+Lua断点调试,不在苦于Unity+Lua没得断点的苦恼_第3张图片
3.修改一下lanch.json 中 Unity-Remote 的 localRoot

不知道lanch.json在哪的点这里就可以了。
在这里插入图片描述
看完就会vscode+Lua断点调试,不在苦于Unity+Lua没得断点的苦恼_第4张图片
${workspaceRoot} :代表当前vscode下的工程路径 LikeThis
看完就会vscode+Lua断点调试,不在苦于Unity+Lua没得断点的苦恼_第5张图片
我们要做的是将localRoot 修改成lua的根目录也就是你使用require(…)的那层目录
例如: " ${workspaceRoot}/Assets/5.Lua/_LuaKit/ToLua"

4.F5 试一试能否运行成功,若无法正常运行请确认路径是否正确
在这里插入图片描述
在这里插入图片描述
就此,vscode 的配置就告一段落了。

Unity+Lua

1.请先下载LuaDebug.lua文件放入工程中Lua文件的根目录(或则其他目录,只要保证可以require到就可以)
Github LuaIde 下载地址 路径:luadebug/LuaDebug.lua
或者去网上找一个能下载到的文章即可。

2.确认并打开你的LuaSocket
这里我们要去看C#文件了~
确认 LuaConst.cs 文件中 openLuaSocket = true 跟踪一下查看是否有关打开 Luasocket的操作。

  luaState.BeginPreLoad();
  luaState.RegFunction("socket.core", LuaOpen_Socket_Core);
  luaState.EndPreLoad();   

如果没有或者你一脸蒙蔽,那也不要慌,跟着下面做。
无论你用的是ulua还是tolua,请找一下你的LuaManager 若不是很明白,那就直接全局搜索 OpenLibs

    protected virtual void OpenLibs()
    {
        luaState.OpenLibs(LuaDLL.luaopen_pb);
        luaState.OpenLibs(LuaDLL.luaopen_struct);
        luaState.OpenLibs(LuaDLL.luaopen_lpeg);
#if UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX
        luaState.OpenLibs(LuaDLL.luaopen_bit);
#endif
    }

直到你发现类似这样的地方,那你就是找到了。
如果你发现的这里没有任何处理luasocket的代码,那请在这里加上

 luaState.OpenLibs(LuaDLL.luaopen_socket_core);

 luaState.BeginPreLoad();
 luaState.RegFunction("socket.core", LuaDLL.luaopen_socket_core);        
 luaState.EndPreLoad();  

就此,C#上的配置已经完毕。

3.在Lua文件中初始化LuaDebug。
这里回到Lua文件中~
找到你的项目工程Lua初始化文件,在里面添加

BreakInfoFun,XPCalllFun = require("LuaDebug")("localhost", 7003)

注意require LuaDebug 的路径因你把它放哪而异

接着,在你lua文件下的计时器中(也就是Update)中调用BreakInfoFun

function luaKit:Update()
    BreakInfoFun()
end

这里作者的更新函数类似这样,找到你的Lua中的更新函数即可。

到此为止,我们的断点准备工作就已经结束了~

开始断点

F5运行vscode,注意选择 Unity-Remote。
打上断点
看完就会vscode+Lua断点调试,不在苦于Unity+Lua没得断点的苦恼_第6张图片
Over
P.S : 虽然作者体验下来Lua断点非常鸡肋,但是可能你对也许有些帮助 :)

你可能感兴趣的:(Lua,Unity)