首次用VsCode调试unity的c#和lua代码的踩坑记录
rider突然不能认证了,vs又太卡,作为一个unity小开发,瞬间懵逼了。想到同事很多用vscode,决定装个过渡一下。谁料遇到好些坑,花了几个小时才解决完,还是记录一下,避免之后踩坑吧,我太难了!一、VsCode环境搭建
官方下载链接,靠谱:Visual Studio Code - Code Editing. Redefined
下载后按提示安装就好,没啥好说得。
二、搭建C#调试环境
2.1 settings.json文件查找与过滤不想看到的文件
vscode首次打开unity工程后,所有文件都会现在在资源管理器中,鱼龙混杂,这自然是不能忍的,网页的教程说是 Ctrl+P,找到settings.json,过滤下不想看到的文件即可,然而首次打开的我却怎么也搜不到这个json文件,找了半天,还是老实的按流程来找吧。
依次打开 文件->首选项->设置,在设置界面中输入settings,这时候谁便点击一个标签如图1所示,在即有超链接提示的settings.json,即跳转到了这个文件,之后就可以ctrl+P 的方式搜索到了 --!
图1
之后就可以在以下代码快中设置过滤的文件了,在files.exclude下设置,没有这个key,可以加一个,格式如下。
{
"workbench.colorTheme": "Default Dark+",
"files.exclude":
{
"**/node_modules": true,
"**/.git": true,
"**/.DS_Store": true,
"**/*.meta": true,
"library/": true,
"local/": true,
"temp/": true,
"*./meta":true,
"*/Library/*":true,
"*.csproj":true,
}
}2.2 安装C#必要插件
资源管理器少了很多无用的文件,舒服多了。接下来,***,c#代码没有提示,这让小白下怎么愉快的编程。
这时候,就得安装一些什么必要的插件了,如图2所示。
图2
首先点击图2红框处的插件扩展项,一次安装以下插件:
1)C#。必不可少的c#高亮,.net core的语义提示;
2)Auto-Using for C#。自动导入尚未引入项目的c#代码的只能提示;
3).NET Core Tools。快速打开一个.net core工程;
4)C# XML Documentation Comments。快速生成C#代码文档;
5)Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code。汉化插件;
6)Debugger for Unity。调试unity c#代码的必备插件。
除了以上插件外,使用过程中vscode也会通过在右下角菜单提示一些报错,安装一些.net framework sdk等,按照提示安装就好,需要注意的是,部分插件可能需要重启电脑才能生效。
有的时候也会在启动工程的时候,在日志中提示,如果有问题,大家在日志中找找线索,如图3所示
图3
2.3 调试C#
插件都装好了,一案调试,***,没反应。不能忍!
看来些网上的帖子,原来这货调试还要生成launch.json文件。该如何做呢?
首先,点击菜单调试图标,如图4所示;
其次,点击运行和调试,选择环境处点击Unity Debugger;如图5所示。这里需要注意的是有的时候UnityDebugger会不显示出来,多按这个流程试几次就好;
最后,在运行和调试处,选择unity editor,点击运行就可以调试了。如图6。至于调试器的名字可以在launch.json中随意调整,就不多说了。
图4
图5
图6
2.4 调试lua
做unity开发的基本都会用到lua语言,比较常用的热更语言。自然调试需求是必不可少的。
首先,仍然是安装必要插件,这里需要EmmyLua 这个插件就好。不了解的话可以看看介绍,它仅能提供lua代码调试还能增加代码提示,非常好用;
接下来要像调试c#时的设置一样,添加lua debugger, emmylua new debug,如图7所示,添加后launch.json新增如图7配置。
配置好launch.json还不够,还要在我们的代码里加上一些逻辑。代码如下所示,其中_luaEnv是LuaEnv实例,而emmy_core.dll在vscode安装emmylua插件的地方,本人安装目录如图9所示。大家把emmy_core.dll拷一份出来放到代码中的路径中就可以了。
private void InitEmmyLuaBreakPoint()
{
string path = Directory.GetCurrentDirectory();
if(File.Exists(path + "/emmy_core.dll"))
{
string luaStr = @"local dbg = require('emmy_core') dbg.tcpConnect('localhost', 9966)";
_luaEnv.DoString(luaStr);
}
}
至于launch.json中的ideconnectdebugger,为ture,需要在代码中先监听指定端口,在用vscode连调(调用dbg.tcpListen),为false,则先启动vscode,再启动代码进行连调(调用dbg.tcpConnect)。而port端口号可以自定义,不过要和代码中一致。
至此,lua的调试也搞定了!
图7
图8
图9
三、结语
写文章记录一下,助力快速搭建环境少踩坑,希望对大家有帮助!
页:
[1]