Unity下调试ToLua(基于IDEA和VSCode)
公司移动端项目是基于Unity的,底层支持由C#提供,上层Lua调用C#中注册的函数支持来做业务逻辑,框架用的是ToLua。开始做移动端有一段时间了,一直都觉得调试代码是个很蛋疼的体验:几乎都是靠肉眼看代码和加打印来做调试的。季度面谈时反映了下,之前大家都没太在意这个问题也就这么过来了,这次提出来了的话就顺便解决下好了。<br/>
网上搜过相关的问题,可能是因为Lua本身小众语言,能找到的资料相当的少,想配合Unity上调试ToLua的现成工具更甚。 下面整理的两个目前非常流行的IDE上调试ToLua的方法,一个是VSCode,另一个是IDEA。下文中提到的IDEA插件和LuaDebug.lua文件懒得找的话这里自取:https://pan.baidu.com/s/1ExDPuQSnuMtZ7E4RZjl_YQ 提取码:72be<br/>
IDEA + EmmyLua插件配置调试Unity
安装好IDEA
安装EmmyLua插件。在启动界面选择插件,然后选择从本地磁盘安装 或者进去后在插件商店里搜索安装。



然后重启IDEA。

创建新的Lua工程或选择从已有文件夹打开工程。
将目录设为Sources Root:

添加调试配置:


(1)给该配置随便命个名
(2)按其要求将下面框内的代码复制到lua的程序入口文件中(一般是工程Lua根目录下的Main.lua文件 如:./xxx/Lua/Main.lua)
(3)、(4) 保存

这一步骤是为了在游戏运行时启动一个监听9996端口的进程,用于在IDEA中调试代码。先在Unity中启动游戏,再在IDEA里选择对应调试配置启动Debug:


VSCode插件 LuaIDE-lite调试ToLua
- 在VSCode的插件商店里搜索luaide安装该插件:

其中上面的第一个是收费版的,费用五块钱一个月蛮便宜的,喜欢VSCode做生产工具推荐还是用这个。虽然下面介绍的是免费的luaide-lite的配置,但luaide的配置几乎也差不多。 - 把LuaDebug.lua放到脚本目录里,和作为程序入口的lua文件同级(一般是工程Lua文件根目录下的Main.lua 如:./xxxx/Lua/Main.lua)。这是用作调试的主文件。
3.在Main.lua中加入下面语句,用于调用LuaDebug:
local BREAKINFOFUNC, XPCALLFUNC = require("LuaDebug")("localhost", 7003)
coroutine.start( function() while true do coroutine.wait(0.1) BREAKINFOFUNC() end end)
(第一个参数是调试设备的地址,本地调试所以填的localhost;第二个端口参数用默认的7003就好了)
4. 确保LuaSocket开启。该项在LuaWraps下的LuaConst.cs文件里:

5. 生成调试配置:

选择Unity-Remote(Lua):

注意:先运行(F5) VSCode上的调试再在Unity启动游戏。
挂断点调试:变量检视、调用堆栈,可直接在代码上鼠标悬停查看变量值。

继续执行(F5)、逐过程(F10)、逐语句(F11);跳转到定义(F12)、查看所有引用(Shift+Alt+F) 等常用快捷键跟Visual Studio大都相同。
另外再说一下,luaide-lite毕竟免费,看更新日志作者应该也没怎么维护,我机子上跑超级吃内存=_=...而且插件启动时经常会崩...;后面用luaide一星期试用,体验倒是蛮好的。
Unity下调试ToLua(基于IDEA和VSCode)的更多相关文章
- 基于Mono和VSCode打造轻量级跨平台IDE
近期Visual Studio推出Mac版本号的消息迅速在技术圈里刷屏,当project师们最喜欢的笔记本电脑Mac,邂逅地球上最强大的集成开发环境Visual Studio的时候,会碰撞出如何精 ...
- Unity下的开发框架--适应web和微端游戏异步资源请求的框架
一. 内容简介: 1. 框架对Web与微端游戏特性的支持: Web和微端游戏最重要的特性是,资源是持续从服务器上即时下载下来的.而保证体验流畅的关键就是保证资源下载分散到持续的体验过程中,并保 ...
- unity 里调试native code
因项目需要,需要调试dll工程代码. 把生成的debug dll和pdb拷贝进unity的plugins工程,遇到 断点无法进入,修改下调试信息格式,OK.
- 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一)
相关连接导航 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二) 常用 Gulp 插件汇总 ...
- sqlserver下调试sql语句
现在版本的sqlServer已经支持调试功能了,但是在使用的时候用到的却很少(毕竟print习惯了..) 这里做一个笔记,简单的说明一下在sqlserver下调试的方法: declare @i int ...
- VS2005--设置Release模式下调试
今天初略看了下,所谓Release和Debug只是大家和编译器约定的一些生成规则而已,所以调试是无所谓Release和Debug的,只是由于生成的规则不同,可能Release的一些调试结果没Debug ...
- Windows下调试hadoop
1. 本地模式 本地模式下调试hadoop:下载winutils.exe和hadoop.dll hadoop.lib等windows的hadoop依赖文件放在D:\proc\hadoop\bin目 ...
- python代码在IDE下调试设置命令行参数
带命令行参数的代码在IDE下调试,需要把参数赋值,本文mark一下具体的命令行参数在代码中赋值方法. if __name__ == "__main__": sys.argv = [ ...
- 使用ffmepg的lib库调试,debug版本下调试无问题,但release版本会出现跑飞的现象
如题(“使用ffmepg的lib库调试,debug版本下调试无问题,但release版本会出现跑飞的现象”). 今天使用ffmpeg进行宿放和颜色格式转换,很简单的代码,却折腾了我一天,这里说来就气啊 ...
- Unity下XLua方案的各值类型GC优化深度剖析
转自:http://gad.qq.com/article/detail/25645 前言 Unity下的C#GC Alloc(下面简称gc)是个大问题,而嵌入一个动态类型的Lua后,它们之间的交互很容 ...
随机推荐
- 拥抱时序数据库,构筑IoT时代下智慧康养数据存储底座
摘要:在HDZ城市行广州站中,来自华为云华为云数据库创新Lab向宇从时序数据库的技术角度,解读一下华为云时序数据库GaussDB(for Influx)如何应用在智慧健康养老行业. 本文分享自华为云社 ...
- Plus版SBOM:流水线物料清单PBOM
相信大家对软件物料清单(SBOM)并不陌生,它是指用于构建软件解决方案的所有软件组件(开源或商业)的列表.但在软件物料清单中,并不包括用于部署软件的微服务和其他组件.为了更全面了解所用的组件,我们需要 ...
- 火山引擎 DataLeap 通过中国信通院测评,数据管理能力获官方认可!
近日,火山引擎大数据研发治理套件 DataLeap 通过中国信通院第十五批"可信大数据"测评,在数据管理平台基础能力上获得认证. "可信大数据"产品能力 ...
- VF01/VF11 创建和冲销开票凭证
1.创建开票凭证 1.1.前台 VF01创建开票凭证 1.2.源代码 "--------------------@斌将军--------------------DATA:lt_billing ...
- 路径规划之 A* 算法
算法介绍 A*(念做:A Star)算法是一种很常用的路径查找和图形遍历算法.它有较好的性能和准确度.本文在讲解算法的同时也会提供Python语言的代码实现,并会借助matplotlib库动态的展示算 ...
- [kuangbin] 专题13 基础计算几何 题解 + 总结
kuangbin带你飞:点击进入新世界 [kuangbin] 专题7 线段树 题解 + 总结:https://www.cnblogs.com/RioTian/p/13413897.html kuang ...
- 版本升级 | v3.0.0卷起来了!多种特殊情况解析轻松拿捏!
在过往发行版的基础上,结合社区用户提供的大量反馈及研发小伙伴的积极探索,项目组对OpenSCA的解析引擎做了全方位的优化,v3.0.0版本正式发布啦~ 感谢所有用户的支持和信任~是很多人的一小步聚在一 ...
- vue+iviews 动态表格(table组件)
iviews官网上关于table的使用方法是固定表头的使用方法,如何生成动态的table网上找了好多也没有特别合适的,综合几位博主的文章经过尝试终于实现了,分享出来供大家参考 一.先看官网上的样例 官 ...
- Go 标准库 net
本篇文章主要介绍 Go 标准库中的 net 包,通过一个小例子介绍常用的 net 包函数/方法 Listen,Accept 和 Dial 等. 1. net 简介 Go 官网对 net 包的定义如下: ...
- 每天学五分钟 Liunx | 有趣的 log
说明:看 systemd log 的时候发现了一段有意思的打印,不太明白为什么会这样,贴出来与朋友们分享,欢迎知道的朋友们说明下,非常感谢. 问题描述:服务启动时,会执行 python 脚本,该脚 ...