该篇文章为步骤教学型文章。作者阅读了网络中散布的关于lua断点的文章,苦于它们要不说的不清不楚,要不过于繁琐复杂。总结所得,一篇文章上手Lua断点。
适合人群:Unity+lua 使用者
阅读方式:步骤阅读
Vscode + Unity + ulua/tolua/slua …
1.安装插件:Luaide-lite
这里说句题外话,这个插件强烈推荐,非常适合vscode使用者来写lua
2.创建LuaDebug
3.修改一下lanch.json 中 Unity-Remote 的 localRoot
不知道lanch.json在哪的点这里就可以了。
${workspaceRoot} :代表当前vscode下的工程路径 LikeThis
我们要做的是将localRoot 修改成lua的根目录,也就是你使用require(…)的那层目录
例如: " ${workspaceRoot}/Assets/5.Lua/_LuaKit/ToLua"
4.F5 试一试能否运行成功,若无法正常运行请确认路径是否正确
就此,vscode 的配置就告一段落了。
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。
打上断点
Over
P.S : 虽然作者体验下来Lua断点非常鸡肋,但是可能你对也许有些帮助 :)