Unity中使用vsCode调试lua代码
由于项目中使用lua语言,所以不会lua调试会感觉开发效率很低,所以最近在网上查找了一些方法,使用比较多的比较简单的应该是VsCode来调试的,这样就大大的提高了我们的效率,下面就自己配置的过程以及总结的一些心得分享一下
1、我们先下载vscode,第一次下载使用的是英文的,不习惯的可以在扩展程序搜索Chinese(Simplified) Language Pack for Visual Studio Code,搜索出来之后进行安装即可;
2、同时需要安装我们所需要调试lua程序的扩展程序,搜索EmmyLua,然后进行安装,安装好之后会有这个文件emmy_core.dll,应该在安装目录...debugger\emmy\windows\x64,具体的可以根据自己的安装目录进行查找,找到这个文件之后,拷贝一份到当前unity工程目录Assets同一级目录下;
3、把我们的lua代码文件夹拖进vscode打开(或者通过vs -> 文件 -> 打开文件夹...),打开之后可以保存当前目录为一个工作区,方便后面使用;
4、打开之后,点开调试界面:

点击创建 launch.json:

选择EmmyLua New Debugger;
{
"version": "0.2.0",
"configurations": [
{
"type": "emmylua_new",
"request": "launch",
"name": "Unity Lua Debug",
"host": "localhost",
"port": 9966,
"ext": [
".lua",
".lua.txt",
".lua.bytes"
],
"ideConnectDebugger": true
}
]
}
这里可以配置我们自己的调试的Name, 需要注意这里的端口号,后面启动程序需要用到;
5、在Unity中启动lua程序的地方,我们需要启动调试程序:
public void Init() {
var env = new LuaEnv();
string path = Directory.GetCurrentDirectory();
if(File.Exists(path + "/emmy_core.dll")) {
string luaStr = @"local dbg = require('emmy_core') dbg.tcpListen('localhost', 9966)";
env.DoString(luaStr);
}
}
这里注意,一般情况下,游戏中的lua代码会有一个全局的LuaEnv,使用这个luaEnv进行DoString(),如果使用重新new出来的LuaEnv会连接不上调试的,同时还要注意这了的端口号和我们之前launch.json中的一致;
6、完成以上流程,基本上就可以进行调试了,先启动我们的Unity工程,启动好了之后,在vscode中启动调试(点击Unity Lua Debug),这样就可以了。

文中有不当之处,还请指正,共同学习,谢谢!
智能推荐
LeetCode小白菜笔记[7]:Merge Two Sorted Lists
LeetCode小白菜笔记[7]:Merge Two Sorted Lists 21. Merge Two Sorted Lists [Easy] 题目:Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of th...
UE4中C++编程 I
UE4完全投入c++的怀抱多少还是出乎意料的,毕竟现在讲究个快速开发,又因为App Store的审核机制使得脚本开发越发流行。很多人第一感觉用c++开发等同于开发慢,更新迭代更慢。为此,官方也用一篇博客解释了为什么。大体意思是使用了一些技术让c++具备了部分快速开发的能力,脚本未曾消失而是升华成更高级的可视化(Bluprint)编程了。 在UE4中用c++不难,可以把unreal c++看作加强版...
leetcode 653. Two Sum IV - Input is a BST两个二叉搜索树中的和
问题描述: Given a Binary Search Tree and a target number, return true if there exist two elements in the BST such that their sum is equal to the given target. 思路: 先利用中序遍历,得到所有结点的值按大小排列的一个list ...
在YOLO2中增加自己的物体识别(一)
从RCNN, fast RCNN, 到faster RCNN, YOLO, 以及最新的YOLO2, 检测的速度是越来越快了, 最新的YOLO2据作者说可以达到67Fps, 支持的种类达9000.想看效果的请戳这里YOLO2 . 这么快速度,当然很多人估计跟我一样,想把它用来检测特定类的物体。这里,我将根据自己查找的一些资料,以及自己的实践,告诉大家怎么在YOLO2中增加识别自己需要的物体。 主要分...
力扣之递归——汉诺塔问题
这是一道经典的算法题,汉诺塔就是用分治还有递归思想。下面来看解题思路 分治思想 首先我们拿A上只有两个盘子这种情况做模拟,发现只有一下三步 将A上面的盘子放到B 将A上面的盘子放到C 将B上面的盘子放到C 然后我们需要将A上只有两个盘子这种情况推广到A上有N个盘子,也分为一下散步 将A上面的N-1个盘子放到B中 将A上面的第N个盘子放到C中 将B上面的N-1个盘子放到C中 边界情况,当A中只有一个...
猜你喜欢
Linux:遇到的tips
批量copy文件 问题:有一个A文件夹中包含了我的n个文件,B文件(txt)中包含了我需要从n个文件中提取出来的m个文件的文件名,批量拷贝到C文件夹中,使用以下命令: 需要注意的是:B文件中包含的文件名最好是绝对路径,如果懒得加上绝对路径,就cd到A文件夹下进行操作。 批量重命名文件 问题:假设这里有200个文件,需要批量重命名,使用以下命令,mac中不可行: 修改前修改后的书写需要学习正则表达式...
python+MobileNetSSD实现视频中的车辆识别
文章目录 1.序言 2.实现目标 3.代码 4.各函数的返回值及作用 5.测试结果 6.存在的问题 7.最后 1.序言 本文代码参考来自 一只稚嫩的小金毛 https://blog.csdn.net/qq_39071739/article/details/103728046 特此说明 由于刚刚才学习opencv的DNN模块,对于模型建立和运用的概念不是很熟悉,在这里就这些代码的实现给出解释 2.实...
matplotlib极坐标方法详解
一、极坐标 在平面内取一个定点O,叫极点,引一条射线Ox,叫做极轴,再选定一个长度单位和角度的正方向(通常取逆时针方向)。对于平面内任何一点M,用ρ表示线段OM的长度(有时也用r表示),θ表示从Ox到OM的角度,ρ叫做点M的极径,θ叫做点M的极角,有序数对 (ρ,θ)就叫点M的极坐标,这样建立的坐标系叫做极坐标系。通常情况下,M的极径坐标...
Hadoop详解(一)——大数据和Hadoop的简介、Hadoop伪分布式的安装步骤
大数据简介 大数据体现 以上几个例子体现了大数据无处不在。 目前很多网络巨头都在使用大数据 分析趋势,随着互联网对网民的理解,网民对网络的反作用,互联网将变得越来越智能,它在满足用户需求的同时,也在创造新的需求。 谷歌的盈利在于所有的软件应用都是在线的,用户在免费使用这些软件产品的同时,把个人的行为、喜好等信息也免费的送给了谷歌。因此,谷歌的产品越丰富,它对用户的理解就越深入,它的广告就越精准,广...
简单内存池设计与实现
使用Java进行开发的时候,不用过多地考虑内存的问题。而C/C++就不得不考虑了,比如每一次的内存申请(malloc),都不能忘了释放(free),不然会出现内存泄漏等等诸多问题。在网络服务程序里,每来一个请求或者链接,都会开辟一小块内存来对其进行相应的处理,如果每次都向操作系统申请内存的话,会使得网络服务程序的性能大打折扣。在这种情况里,是非常有必要使用内存池的。近期在做一个消息转发机制的轮子,...
