公司移动端项目是基于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. 突破开源Redis的内存限制,存算分离的GaussDB到底有多能“装”?

    摘要:GaussDB(for Redis)(下文简称高斯Redis)是华为云数据库团队自主研发的兼容Redis协议的云原生数据库,该数据库采用计算存储分离架构,突破开源Redis的内存限制,可轻松扩展 ...

  2. 什么是CodeArts?

    摘要:一站式.全流程.安全可信的软件开发生产线. 软件开发生产线(CodeArts)原名"软件开发平台(DevCloud)"是集华为近30年研发实践.前沿研发理念.先进研发工具为一 ...

  3. ModelArts的雪中送炭,让我拿下CCF BDCI华为Severless工作负载预测亚军

    摘要: 中国计算机学会大数据与计算智能大赛(CCF BDCI)华为Severless工作负载预测亚军方案和ModelArts使用体验分享 本文分享自华为云社区<免费薅ModelArts算力资源- ...

  4. Kubernetes(K8S) Pod 介绍

    Pod 是 k8s 系统中可以创建和管理的最小单元, 是资源对象模型中由用户创建或部署的最小资源对象模型, 也是在 k8s 上运行容器化应用的资源对象, 其他的资源对象都是用来支撑或者扩展 Pod 对 ...

  5. UNI-APP 使用Echart

    UNI-APP 使用Echart(含地图教程) https://blog.csdn.net/weixin_43548442/article/details/121468189 uniapp使用echa ...

  6. ASP.Net Core 5.0 MVC Session的添加,及它与Cookie的关系

    1.在控制器上新增一个方法 public IActionResult SessionAndCookie() { string result = HttpContext.Session.GetStrin ...

  7. 超全面总结Vue面试知识点,助力金三银四

    前言 本文会对Vue中一些常见的重要知识点以及框架原理进行整理汇总,意在帮助作者以及读者自测Vue的熟练度以及方便查询与复习.金三银四的到来,想必vue会是很多面试官的重点考核内容,希望小伙伴们读完本 ...

  8. SD协议-基本概念

    1.SD协议版本 SD 1.1 SD 2.0 SD 3.0 在看协议的时候,需要注意协议的版本,注意版本之间的差别 SD协议是常见的数据通信和存储卡之间的协议 HDMI是显示相关的协议,遵循HDMI协 ...

  9. 【PID】初学者的pid,详细的介绍了代码为什么是这样写的

    from:Improving the Beginner's PID – Introduction « Project Blog (brettbeauregard.com)

  10. 持续集成指南:Gitlab CI/CD 自动部署前端项目

    前言 之前陆续写了 Gitlab 的安装使用还有 Gitlab CI/CD 的配置使用,已经把 AspNetCore 的后端项目都做了持续集成了,尝到甜头之后,现在前端的项目也要加入自动化部署,所以经 ...