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 ,并提供上下文操作以将初始化移动到 启动 或 唤醒。
当 代码视图被禁用时,性能指标可以显示在边距中:

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

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

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

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

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

JetBrains Rider 会警告您不要使用低效的字符串字面量比较
标记属性,并提供快速修复以将其重写为调用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 在 .着色器 文件中提供对 ShaderLab 语法的支持,包括对 Cg/HLSL 代码块、隐式 shader 关键字、特定阶段的局部关键字,以及带有 _KEYWORD_DEFINED 后缀的预处理器指令的支持。
ShaderLab 语法的语法和语法错误高亮显示。 请注意,您可以在 编辑器 | 配色方案 | ShaderLab 设置页面  Ctrl+Alt+S 上更改默认配色方案。
颜色辅助:

代码补全:

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

代码折叠.

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

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

您可以 启用或禁用 shader 关键字 ,以切换预处理器分支中的高亮显示。

Rider 会在 shader 上下文小组件中显示 shader pass 的名称,以便您了解 shader 的使用位置。

支持程序集定义文件
程序集定义文件( .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 页面上的相应文章。


