公司移动端项目是基于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. 华为云GaussDB(for Influx)揭秘第五期:最佳实践之子查询

    摘要: GaussDB(for influx)提供灵活的子查询能力,满足海量数据场景下的高性能查询需求. 本文分享自华为云社区<华为云GaussDB(for Influx)揭秘第五期:最佳实践之 ...

  2. 译文丨伯克利对serverless的看法:简化云编程

    摘要:Serveless计算的目标和机会是让云编程者像使用高级语言那样受益. 本文分享自华为云社区<简化云编程,伯克利对serverless的看法(翻译)>,作者: 二手雄狮. 译者言: ...

  3. Cesium球心坐标与本地坐标系经纬转换的数学原理—矩阵变换

    之前整理过:<透析矩阵,由浅入深娓娓道来-高数-线性代数-矩阵>.<三维旋转笔记:欧拉角/四元数/旋转矩阵/轴角-记忆点整理>,这次转载 FuckGIS的<Cesium之 ...

  4. Solon Aop 特色开发(6)新鲜货提取器,提取Bean的函数进行定制开发

    Solon,更小.更快.更自由!本系列专门介绍Solon Aop方面的特色: <Solon Aop 特色开发(1)注入或手动获取配置> <Solon Aop 特色开发(2)注入或手动 ...

  5. 大数据-业务数据采集-FlinkCDC 读取 MySQL 数据存入 Kafka

    目录 作用 app 产生各层数据的 flink 任务 bean 数据对象 common 公共常量 utils 工具类 app.ods.FlinkCDC.java package com.atguigu ...

  6. 微信小程序 wx:for 遍历 Map集合

    如果要在微信小程序wxml中对ES6的Map集合进行wx:for遍历,如下: let map = new Map(); map.set("a",[1,2,3]); map.set( ...

  7. Android内存泄露检测 LeakCanary2.0(Kotlin版)的实现原理

    本文介绍了开源Android内存泄漏监控工具LeakCanary2.0版本的实现原理,同时介绍了新版本新增的hprof文件解析模块的实现原理,包括hprof文件协议格式.部分实现源码等. 一.概述 L ...

  8. [完整]流程解决Vue3项目搭建步骤

    Vue3项目完整搭建步骤 一. 使用vite创建vue3项目 npm init vue@latest 或者npm create vite@latest进行初始化项目并创建项目名称code,进入code ...

  9. 【调试】kprobes(二)使用方法

    前言 上一节介绍了kprobe的基本概念,下面我们将使用几个具体的例子,看下kprobe在实际使用中有那些应用场景. kprobe 内核的samples/kprobe目录下有kprobe相关的例子,我 ...

  10. SetFitABSA: 基于 SetFit 的少样本、方面级情感分析

    SetFitABSA 是一种可以有效从文本中检测方面级情感的技术. 方面级情感分析 (Aspect-Based Sentiment Analysis,ABSA) 是一种检测文本中特定方面的情感的任务. ...