一般我们做unity c#开发基本使用vs,也就是visual studio,写shader使用vscode,这套黄金组合目前应该算是最完美的。不过最近因为项目同时涉及window桌面开发和DLL嵌入(我职业生涯还是桌面开发为主,我当年刚入行就是winform+js),导致我unity工程csproj关联非常多,整个unity编辑器和vs2019操作起来巨卡,目前除了卸载csproj能解决之外别无他法,但是卸载了csproj,我编译的时候又要加载csproj,很麻烦。

所以我就把vscode环境配起来了,直接用vscode编写unity c#脚本。

安装配置插件如下:

基本上安装成功启用后,首次通过unity打开vscode就会自动下载配置所需要的文件和程序集,之后我们写unity c#就有自动补全,和vs一样。

常用vscode快捷键操作:

1.Alt+Shift+F        c#代码格式化排版 (vs是自动格式化)

也可以在设置里面设置ctrl+s自动格式化

2.F2                     c#代码字段重命名(vs是Ctrl+RR)

3.CTRL+/             c#代码块注释(右shift左边的那个/)

4.F12                    api转到定义

5.ALT+←               工作区段回跳

vscode调试unity:

安装启用Debugger For Unity后,直接点击BUG爬虫

点击创建lanuch.json

点击Debugger For Unity

如果看不到Debugger For Unity

需要将Debugger For Unity添加到工作区

然后点击左上角play-UnityEditor

打一个断点运行就可以看到效果,调试操作和vs一样F5 F10 F11:

自动刷新编译的问题:

vs2019我们可以设置后台Ctrl+S自动刷新并且编译,如图:

设置为True之后我们每次ctrl+s就会编译,免得我们每次切换到unityeditor就要“转菊花”。

vscode这个功能我没找到,所以这一点比较麻烦,我写了一个隔一段时间自动刷新的脚本,但是脚本有潜在风险:

using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEngine;public class EditorAutoRefreshScripts : EditorWindow {private string refreshTimeString = "5";private float refreshTimeFloat = 5;private float refreshElapse = 0f;private bool refreshEnable = true;private int refreshTimes = 0;private string refreshScriptsDirectory = @"D:\Github\ShaderSamples\ShaderSamples\Assets\Scripts";[MenuItem ("SelfTools/打开自动刷新脚本")]static public void execute () {Rect wr = new Rect (0, 0, 400, 300);EditorAutoRefreshScripts window = (EditorAutoRefreshScripts) EditorWindow.GetWindowWithRect (typeof (EditorAutoRefreshScripts), wr, true, "自动刷新脚本");window.Show ();}private void OnGUI () {GUILayout.Label ("时间设置为秒");refreshTimeString = EditorGUILayout.TextField (refreshTimeString);if (GUILayout.Button ("更新时间")) {if (float.TryParse (refreshTimeString, out refreshTimeFloat)) {refreshElapse = 0f;refreshEnable = true;this.ShowNotification (new GUIContent ("设置时间为更新成功"));} else {this.ShowNotification (new GUIContent ("设置时间为秒,设置错误"));refreshEnable = false;}}GUILayout.Label (string.Format ("刷新次数{0}", refreshTimes));}void Update () {if (refreshEnable) {float refreshInterval = Time.realtimeSinceStartup - refreshElapse;if (refreshInterval > refreshTimeFloat) {refreshElapse = Time.realtimeSinceStartup;refreshTimes++;Debug.LogFormat ("刷新一次:{0}", System.DateTime.Now.ToString ("yyMMdd-hhMMss-fff"));AssetDatabase.Refresh();  //DirectoryInfo dirinfo = new DirectoryInfo (refreshScriptsDirectory);//RecusRefreshFiles (dirinfo);   //没有效果}}}private void RecusRefreshFiles (DirectoryInfo dirinfo) {FileInfo[] files = dirinfo.GetFiles ();if (files != null) {for (int i = 0; i < files.Length; i++) {files[i].Refresh ();}}DirectoryInfo[] dirs = dirinfo.GetDirectories ();if (dirs != null) {for (int i = 0; i < dirs.Length; i++) {RecusRefreshFiles (dirs[i]);}}}
}

核心就是隔5秒就刷新一下AssetDataBase,这就是风险所在,我原本只想刷新我单个脚本,或者说脚本总目录,但是c#Directory递归Refresh无法关联Unity的资源刷新检测,所以这下只能刷新全体Assets了,如果我有一个Assets不想保存,结果就被自动保存了,所以这个脚本慎用。

好了,差不多勉强能达到vs写调C#的感觉,当然我个人还是更喜欢vs。

开发手札:unity+vscode联合开发相关推荐

  1. 【错误记录】Visual Studio 2019 中运行 Unity C# 脚本时报错 ( 根据解决方案, 可能需要安装额外的组件才能获得 | .NET 桌面开发 | 使用 Unity 的游戏开发 )

    文章目录 一.报错信息 二.解决方案 三.Visual Studio 2019 中运行 Unity C# 脚本需要的组件 1..NET 桌面开发 2.使用 Unity 的游戏开发 一.报错信息 Vis ...

  2. 【VR开发】Unity中VR开发的基本设置-如何设置Player视角

    [背景] 上一篇博文,我们通过导入需要的插件完成了Unity中VR开发的环境准备,接下来就需要在项目中真正着手布局VR,首先就是作为玩家的视角如何导入. [设置方法] 在Hierarchy中新建一个空 ...

  3. VSCODE修改文字编码格式为GB2312和TAB键为2个空格(MDK5和VSCODE联合开发STM32程序)

    在MDK5中,代码.变量等的高亮显示或代码自动补全做的不是很好,经常会出现在A函数中有变量的高亮功能,在B函数中就没有了.特别是在RT-Thread创建的多个线程中,发现同一文件中的其它函数中的变量都 ...

  4. java web开发(和vue联合开发)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 前面我们谈到了很多次vue,也说到了vue的很多优点.比如说,vue实现了mvc中全部v的功能, ...

  5. VSCode与Keil联合开发STM32

    目录 1.为什么要联合开发 2.配置VSCode的环境 1.安装c/c++ 2.安装Embedded IDE 3.设置编译工具 4.导入 STM32 工程 5.配置编译器选项 6.烧录工具选择 3.附 ...

  6. Unity手机游戏开发:从搭建到发布上线全流程实战

    前言: 技术书籍是学习技术知识的重要资源之一.读技术书可以帮助我们学习新技能和知识,技术书籍提供了可靠的.全面的信息,帮助我们快速学习新技能和知识.同时技术书籍有助于保持你的竞争力,因为它们提供了最新 ...

  7. Unity从头开始开发增强现实(AR)游戏学习教程

    使用Unity 2021构建增强现实飞镖游戏 学习从头开始开发增强现实(AR)游戏,使用AR基金会,货币化,发布游戏玩商店 Build a Augmented Reality Dartboard Ga ...

  8. Unity安卓游戏开发:打造7款2D 3D游戏 Unity Android Game Development : Build 7 2D 3D Games

    流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确) |大小:15.4 GB |时长:32h 55m Un ...

  9. 《Unity 游戏案例开发大全》一6.5 游戏主场景

    本节书摘来异步社区<Unity 游戏案例开发大全>一书中的第6章,第6.1节,作者: 吴亚峰 , 杜化美 , 于复兴 责编: 张涛,更多章节内容可以访问云栖社区"异步社区&quo ...

最新文章

  1. TensorRT 7.2.1 开发概要(上)
  2. python--属性魔法方法
  3. Go 采用 time.After 实现超时控制
  4. 关于用Delphi开发的一些基本的套路
  5. 创建java ee_eclipse Java EE安装和web项目的创建
  6. Java常见排序算法之Shell排序
  7. js 清除html页面,如何清除使用JavaScript输入的HTML文件?
  8. 学习OpenCV——Gabor函数的应用
  9. 最小生成树-Prim算法的Python实现
  10. JavaScript开发者的工具箱
  11. python制作动态的微信个人名片
  12. Redis Scard 命令
  13. 大数据就业前景怎么样?hadoop工程师、数据挖掘、数据分析师薪资多少?
  14. 【408数据结构】备考常见必会算法图鉴
  15. 在Word里怎么设置每页不同的页眉
  16. 最详细的Java入门完整教程,学Java先收藏了
  17. ios piv6遭拒绝
  18. 皇家墨尔本理工大学计算机科学专业,皇家墨尔本理工大学计算机科学本科专业.pdf...
  19. 华为云计算入门-计算虚拟化
  20. c语言对sht11编程,SHT11数字温湿度传感器 含源代码和仿真图

热门文章

  1. 数据库系统:第七章数据库设计
  2. PHP数组根据某个字段进行水平合并,横向合并
  3. 决策树第二部分预剪枝
  4. win11解决IE浏览器使用问题
  5. Ubuntu新手入门
  6. PANet:YOLOv4中的路径聚合网络
  7. 百度小程序免费制作平台推荐
  8. 运筹学 黄金分割法 JAVA实现
  9. 500余人角逐宁夏跆拳道联赛冠军
  10. 【美团】面试真题_2021年