Unity 功能
您可以先观看这段 3 分钟的视频,其中 Matt Ellis 简要概述了 JetBrains Rider 的 Unity 开发功能。
Unity 资源管理器
默认情况下,在 Rider 中处理 Unity 项目时, 资源管理器工具窗口 会切换到 Unity 视图,显示构成项目的所有资源。
主要是, 软件包 节点在 Unity 视图中显示项目根目录中 包 文件夹的内容。 这可能只包含一个 manifest.json 文件,您可以在 Rider 中编辑该文件,保存后 Unity 会更新您的项目以包含您添加的包。 更重要的是, 包 节点还会显示项目中引用的所有包。 Unity 支持多种不同的包类型,Rider 会显示它们全部。 有关 Rider 和 Unity 包的更多信息,请参阅 博客文章。

如果切换到 解决方案 视图,您将仅看到项目的 Scripts部分。
控制 Unity 编辑器
为了减少 Rider 和 Unity 编辑器之间的上下文切换时间,Unity 编辑器的一些功能直接在 Rider 的右上角 Unity 工具栏中显示。

工具栏允许:
控制播放模式: Play、 暂停 和 步长 按钮对应于 Unity 编辑器中的相同按钮,并以完全相同的方式工作。
访问重要的 Unity 相关操作 ,使用
与 Unity 相关的操作 列表:
编辑器助手
如果 代码视图被禁用,JetBrains Rider 会为 Unity 隐式使用的类、方法和字段显示 Unity 边距图标:

通过 UnityEngine.Color、 UnityEngine.Color32 和 Color.HSVToRGB 定义的颜色会在编辑器中高亮显示。 您还可以在颜色使用上按下 Alt+Enter ,并选择 从调色板中选取颜色 以打开颜色编辑器并 直观地修改颜色。

查找用法
在 Unity 项目中, 查找用法 Alt+F7 功能扩展了从 Unity 场景、资源和预制件中提取的数据。 如果您搜索用作事件处理程序的类或方法,JetBrains Rider 将显示它在 Unity 文件中的使用位置,并按类型、组件名称和父游戏对象分组。
Code Vision
代码视图也支持 Unity。 启用后,您可以看到哪些类、方法、字段(包括在 Unity 中设置的字段值)甚至资源被隐式使用。 代码视图提供到 Unity 编辑器的导航。

性能分析
JetBrains Rider 向您显示性能敏感区域:每帧调用的事件函数,例如 更新、 FixedUpdate 和 LateUpdate ,以及协程方法。 在这些频繁调用的方法中,性能指标还会引起您对已知高开销操作的注意,例如调用 GetComponent、 查找 或 SendMessage ,并提供上下文操作以将初始化移动到 启动 或 Awake。
当 代码视图被禁用时,性能指标可以显示在边距中:

如果启用,指标可以显示为代码视图指标:

Unity 有很多非常频繁调用的方法。 这些方法被视为性能关键上下文,并在编辑器边距中高亮显示。

您可以在 JetBrains Rider 设置 的 页面上启用和配置性能分析,位于 Ctrl+Alt+S 下的 在频繁调用的代码中启用性能分析。
事件函数
检查和快速修复
JetBrains Rider 会显示未知场景、标签和层的警告。

当 解决方案范围分析 启用时,JetBrains Rider 会理解隐式使用的字段和事件函数,并且不会将它们标记为未访问。
空的事件函数会显示为无用代码,并提供 快速修复以将其移除。
在
NetworkBehaviour以外的任何类中使用SyncVarAttribute会被视为错误。建议的快速修复是从未解析符号的使用中创建一个序列化字段:

JetBrains Rider 确保您的所有事件函数都有正确的签名:它会突出显示不正确的签名,并提供快速修复以纠正它们:

JetBrains Rider 会警告您不要使用低效的字符串字面量比较
tag属性,并提供快速修复以将其重写为调用CompareTag。
JetBrains Rider 会警告您如果尝试使用
new关键字创建从MonoBehaviour或ScriptableObject派生的类的新实例。 建议的快速修复是使用gameObject.AddComponent<T>()或ScriptableObject.CreateInstance<T>()。还有针对
[InitializeOnLoad]和[InitializeOnLoadMethod]属性的检查,确保它们具有正确的方法或构造函数签名,并且如果类没有静态构造函数,JetBrains Rider 会将冗余的[InitializeOnLoad]属性变灰,并提供快速修复以快速移除属性或创建构造函数。
您可以在 JetBrains Rider 中查看 Unity 特定代码检查的完整列表 此处。
外部注解
许多 Unity 特定的程序集都带有 外部注解 注解,以在您使用这些程序集时改进 代码检查。
将带有 UnityEngine.dll 、 UnityEngine.Networking.dll 和 UnityEditor.dll 属性的代码视为隐式使用。
将
Component.gameObject和Object.name标记为不可为空。Debug.Assert被标记为断言方法以帮助空值分析(例如在Debug.Assert(x != null)之后“值不能为空”)。Debug.AssertFormat、LogFormat等获得字符串格式化辅助功能。Assertions.Assert方法被标记为断言方法以帮助空值分析。EditorTestsWithLogParser.ExpectLogLineRegex获得正则表达式辅助功能。各种属性现在要求其应用的类派生自特定的基类。 例如,
[CustomEditor]需要一个基类为编辑器。支持 Unity 2017.2 的模块化 UnityEngine 程序集。
支持 .shader 文件
JetBrains Rider provides support for ShaderLab syntax in .着色器 files, including support for Cg/HLSL blocks, implicit shader keywords, stage-specific local keywords, and preprocessor directives with the _KEYWORD_DEFINED suffix.
ShaderLab 语法的语法和语法错误高亮显示。 请注意,您可以在 编辑器 | 配色方案 | ShaderLab 设置页面  Ctrl+Alt+S 上更改默认配色方案。
颜色辅助:

代码补全:

括号匹配和 高亮显示、 注释/取消注释 Ctrl+/ ,以及 待办事项资源管理器支持。

代码折叠.

[Cg/HLSL]
CGPROGRAM/CGINCLUDE块和 .cginc 文件的语法高亮显示。[Cg/HLSL] Cg/HLSL 块中的代码补全。

随处搜索将帮助您导航到着色器文件中的符号。

You can enable and disable shader keywords to toggle highlighting in preprocessor branches.

Rider shows the name of the shader pass in the shader context widget, so you can tell where your shader is being used from.

支持程序集定义文件
程序集定义文件( .asmdef )用于将项目脚本分成多个程序集以减少编译时间。 当您更改脚本时,Unity 只会重新构建所需的程序集。
JetBrains Rider 提供对 .asmdef 文件的支持:JSON 模式验证、代码补全、查找用法、重命名重构、引用元素导航,以及针对自引用和文件名/程序集名称不匹配的检查/快速修复。 有关 .asmdef 文件支持的更多信息,请参阅 博客文章。

实时模板
JetBrains Rider 提供了一些 Unity 特定的 实时模板 ,例如, sprop 用于带有序列化后备字段的 Unity 属性,或 sfield 用于 Unity 序列化字段。
文件模板
JetBrains Rider 提供了许多 文件模板 ,用于新建 C# 脚本、测试和着色器文件。

Unity 日志

当 Rider 连接到 Unity 编辑器时, Unity 工具窗口将可用。 要打开该窗口,请从主菜单中选择 ,或使用 Unity 工具栏上的 与 Unity 相关的操作 列表。
日志 工具窗口的 Unity 选项卡将 Unity 的 控制台 引入 Rider。 该选项卡显示 Unity 日志条目,并在 Unity 中记录事件时更新。
窗口右侧的 输出 部分显示当前选定日志条目的内容。 Rider 使内容具有交互性,因此您可以导航到日志条目中提到的任何源文件、类、方法或属性。
请注意,日志条目可以按事件类型过滤:来自播放或编辑模式的事件、警告、错误和消息。
支持 UnityYAMLMerge
默认情况下,JetBrains Rider 使用 UnityYAMLMerge 工具合并 Unity 项目中的所有 YAML 文件。 您可以在 Rider 设置中的 中设置额外的 UnityYAMLMerge 参数。

预提交检查
在 Unity 项目中,预提交检查通过在问题进入版本控制之前捕获常见问题,确保更干净、更稳定的存储库。 有关更多信息,请参阅 JetBrains Unity GitHub 页面上的相应文章。


