公司移动端项目是基于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

  1. 安装好IDEA

  2. 安装EmmyLua插件。在启动界面选择插件,然后选择从本地磁盘安装 或者进去后在插件商店里搜索安装。







    然后重启IDEA。

  3. 创建新的Lua工程或选择从已有文件夹打开工程。

  4. 将目录设为Sources Root:

  5. 添加调试配置:







    (1)给该配置随便命个名

    (2)按其要求将下面框内的代码复制到lua的程序入口文件中(一般是工程Lua根目录下的Main.lua文件 如:./xxx/Lua/Main.lua)

    (3)、(4) 保存



    这一步骤是为了在游戏运行时启动一个监听9996端口的进程,用于在IDEA中调试代码。

  6. 先在Unity中启动游戏,再在IDEA里选择对应调试配置启动Debug:



VSCode插件 LuaIDE-lite调试ToLua

  1. 在VSCode的插件商店里搜索luaide安装该插件:



    其中上面的第一个是收费版的,费用五块钱一个月蛮便宜的,喜欢VSCode做生产工具推荐还是用这个。虽然下面介绍的是免费的luaide-lite的配置,但luaide的配置几乎也差不多。
  2. 把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)的更多相关文章

  1. 基于Mono和VSCode打造轻量级跨平台IDE

      近期Visual Studio推出Mac版本号的消息迅速在技术圈里刷屏,当project师们最喜欢的笔记本电脑Mac,邂逅地球上最强大的集成开发环境Visual Studio的时候,会碰撞出如何精 ...

  2. Unity下的开发框架--适应web和微端游戏异步资源请求的框架

    一.   内容简介: 1.   框架对Web与微端游戏特性的支持: Web和微端游戏最重要的特性是,资源是持续从服务器上即时下载下来的.而保证体验流畅的关键就是保证资源下载分散到持续的体验过程中,并保 ...

  3. unity 里调试native code

    因项目需要,需要调试dll工程代码. 把生成的debug dll和pdb拷贝进unity的plugins工程,遇到 断点无法进入,修改下调试信息格式,OK.

  4. 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一)

    相关连接导航 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二) 常用 Gulp 插件汇总 ...

  5. sqlserver下调试sql语句

    现在版本的sqlServer已经支持调试功能了,但是在使用的时候用到的却很少(毕竟print习惯了..) 这里做一个笔记,简单的说明一下在sqlserver下调试的方法: declare @i int ...

  6. VS2005--设置Release模式下调试

    今天初略看了下,所谓Release和Debug只是大家和编译器约定的一些生成规则而已,所以调试是无所谓Release和Debug的,只是由于生成的规则不同,可能Release的一些调试结果没Debug ...

  7. Windows下调试hadoop

    1.   本地模式 本地模式下调试hadoop:下载winutils.exe和hadoop.dll hadoop.lib等windows的hadoop依赖文件放在D:\proc\hadoop\bin目 ...

  8. python代码在IDE下调试设置命令行参数

    带命令行参数的代码在IDE下调试,需要把参数赋值,本文mark一下具体的命令行参数在代码中赋值方法. if __name__ == "__main__": sys.argv = [ ...

  9. 使用ffmepg的lib库调试,debug版本下调试无问题,但release版本会出现跑飞的现象

    如题(“使用ffmepg的lib库调试,debug版本下调试无问题,但release版本会出现跑飞的现象”). 今天使用ffmpeg进行宿放和颜色格式转换,很简单的代码,却折腾了我一天,这里说来就气啊 ...

  10. Unity下XLua方案的各值类型GC优化深度剖析

    转自:http://gad.qq.com/article/detail/25645 前言 Unity下的C#GC Alloc(下面简称gc)是个大问题,而嵌入一个动态类型的Lua后,它们之间的交互很容 ...

随机推荐

  1. M-SQL:超强的多任务表示学习方法

    摘要:本篇文章将硬核讲解M-SQL:一种将自然语言转换为SQL语句的多任务表示学习方法的相关论文. 本文分享自华为云社区<[云驻共创]M-SQL,一种超强的多任务表示学习方法,你值得拥有> ...

  2. 火山引擎 DataTester 首推 A/B 实验经验库,帮助企业高效优化实验设计能力

      更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近日,火山引擎 DataTester 推出了重要功能--A/B 实验经验库. 基于在字节跳动已完成 150 万 ...

  3. SpringBoot 接口输出文件流 & Vue 下载文件流,获取 Header 中的文件名

    SpringBoot 接口输出文件流 & Vue 下载文件流,获取 Header 中的文件名 @GetMapping("/download") public Respons ...

  4. System.out.printf 格式化输出

    System.out.printf @Test public void printTest() throws Exception { String str = "安倍晋三已无生命体征!!&q ...

  5. 精细化边缘安全防护:如何防止CDN域名被恶意刷量?

    越是数字化时代,越要做好基建"安全"的顶层设计 随着消费及产业互联网的不断发展,数字化将实现全场景覆盖,人类的生活和生产方式也随之不断改变. 内容分发网络CDN(Content D ...

  6. Windows 10 修改环境变量不重启生效的解决方案

    # 表示 Win 键 #R 进入 cmd(不要使用 Listary 的 cmd 方式进入,设置不会生效) 键入 set PATH=C: 关闭窗口 同样方式打开 cmd 键入 echo %PATH%,会 ...

  7. Codeforces Round #722 (Div. 2) A~D题解

    补题链接:Here 1529A. Eshag Loves Big Arrays [题意描述] 给定一个长度为 \(n\) 的正整数数组 \(a\) ,现在可执行若干次操作(可为 \(0\)) 具体操作 ...

  8. 【驱动】SPI驱动分析(二)-SPI驱动框架

    SPI驱动框架 SPI驱动属于总线-设备-驱动模型的,与I2C总线设备驱动模型相比,大体框架是一样,他们都是实际的总线.总体框架如下图所示: 从上到下,分为三层,用户空间,内核空间,和硬件层. 用户空 ...

  9. Linux 系统安全加固经验总结

    本文为博主原创,转载请注明出处: 目录  1. 禁止root密码登录 2. linux 用户密钥复杂度及有效期设置 3. 检查sudo权限 4.关闭ftp 5.设置文件的属主并指定读写执行权限 6.管 ...

  10. 使用docker compose 编排微服务发布

    本文为博主原创,未经允许不得转载: 目录: 1. compose 简介 2. compose 安装 3. 编写 docker-compose.yml 实现微服务发布 4. docker-compose ...