当前位置: 首页 > news >正文

Unity3D 入门:使用 Visual Studio 开发 Unity C# 脚本,说说根目录的那些 sln 和 csproj 文件

本文介绍 Unity3D 项目根目录的 sln 和 csproj 文件,你将知道如何正确理解和使用它们。


对于传统 .NET/C# 的开发者来说,在解决方案中管理 NuGet 包,在 C# 项目中引用 dll 或 NuGet 包是家常便饭。但在 Unity 项目里面,你可能要改变这一观念——因为 Unity 项目里面实际上并不存在 sln 和 csproj 文件。

等等!那我们在根目录看到的那些 sln 和 csproj 文件是什么?

Unity 项目根目录下的 sln 和 csproj 文件

那只是 Unity 编辑器为了让你方便写 C# 代码临时生成给你用的。

默认 Unity 不指定外部脚本编辑器时,会单纯打开 .cs 文件而已。而如果指定了 Visual Studio 作为外部脚本编辑器,那么再从 Unity 中打开 C# 项目时,将会生成 sln 和 csproj 文件,然后调用 Visual Studio 打开生成的 sln 和 csproj 文件。

打开 C# 项目

设置外部工具

这里就需要特别注意了:每次点击 Open C# Project 打开 C# 项目时,都会重新生成 sln 和 csproj 文件,所以实际上你对 sln 和 csproj 所做的任何改动都是无效的!

这样的设计,有好处也有坏处:

  1. 有了 sln 和 csproj,Visual Studio 将能充分运行代码分析器,可以在类与其他符号之间跳转,可以有智能感知提示,可以实时发现编写中的代码错误(甚至是引用错误)。
  2. 但让 Visual Studio 的各种功能激活后就会让我们这样的入门开发者产生误会,认为这其实就是 C# 项目,会尝试真的对这些项目进行可能超出 Unity 功能范围的修改。

真正在编译完成放到游戏中运行的,是 Assets 文件夹中的文件。而外面的 sln 和 csproj 文件,应该加入到 .gitignore 文件中,从版本管理中忽略掉。


我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。

如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。

知识共享许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

相关文章:

  • Unity3D 入门:最简单的控制视角,以及控制角色前进、转向的脚本
  • 比较 Windows 上四种不同的文件(夹)链接方式(NTFS 的硬链接、目录联接、符号链接,和大家熟知的快捷方式)
  • 了解 Windows Linux 下命令行 Shell 启动程序传参的区别,这下不用再担心 Windows 下启动程序传参到 Linux 下挂掉了
  • 适合 .NET 开发者用的 GitHub Actions(时不时更新)
  • 在 CMD 里根据进程名杀掉进程
  • 在 PowerShell 里根据进程名杀掉进程
  • 在制作多框架项目的 NuGet 包时应该注意的问题(buildMultiTargeting TargetFrameworks)
  • 专业团队:推荐一个网站,生成巨幅文字注释
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • 通过设置启用 Visual Studio 默认关闭的大量强大的功能提升开发效率
  • 使用 SetWindowCompositionAttribute 来控制程序的窗口边框和背景(可以做 Acrylic 亚克力效果、模糊效果、主题色效果等)
  • input 不能为空 js_我用JS刷LeetCode | Day 9 | Implement strStr()
  • 宝塔同时安装苹果cms海洋cms_maccms安装了后接下来做什么?
  • hive 修改表的存储格式_Hive存储格式
  • mac redis 链接_2018 MAC下安装Redis和Redis可视化工具RDM并连接Redis
  • 2017届校招提前批面试回顾
  • ES6系统学习----从Apollo Client看解构赋值
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • JS字符串转数字方法总结
  • Redux系列x:源码分析
  • supervisor 永不挂掉的进程 安装以及使用
  • VuePress 静态网站生成
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 关于使用markdown的方法(引自CSDN教程)
  • 好的网址,关于.net 4.0 ,vs 2010
  • 聚簇索引和非聚簇索引
  • 区块链分支循环
  • 如何学习JavaEE,项目又该如何做?
  • 使用putty远程连接linux
  • 一个完整Java Web项目背后的密码
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 阿里云重庆大学大数据训练营落地分享
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • # 数据结构
  • $NOIp2018$劝退记
  • (11)MSP430F5529 定时器B
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (ZT)薛涌:谈贫说富
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (三十五)大数据实战——Superset可视化平台搭建
  • (四)Android布局类型(线性布局LinearLayout)
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (一)kafka实战——kafka源码编译启动
  • (译) 函数式 JS #1:简介
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • .net core 6 集成和使用 mongodb
  • .net framework4与其client profile版本的区别
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法