IntelliSense 无法理解 Unreal 的宏和函数。VisualAssist 会。

Visual Assist 为 Visual Studio 添加了 Unreal Engine 感知的 IntelliSense、导航和重构功能——在 UCLASS、UFUNCTION 和其他 UE 宏上准确无误,而内置解析器则无法正常工作。

免费试用 Visual Assist 的全部功能 30 天。购买后无需重新安装或重新配置。

Visual Studio 与 Visual Assist

消除误报,准确解析虚幻引擎代码。

这是一个普通的虚幻引擎类。它使用了UCLASS`__init__`、 `__init__`UPROPERTYUFUNCTION`__init__`——这些宏是虚幻引擎代码的基础。左侧,Visual Studio 内置的 IntelliSense 会将一些原本正常的代码标记为错误代码。右侧,Visual Assist 会读取相同的宏,从而保持代码的整洁,并方便用户浏览和修改。

Visual Studio · IntelliSense only as shipped
UE bad
Visual Studio · with Visual Assist parsed
UE good
同样的十二行代码,有两种解读方式。Visual Studio 的 IntelliSense 无法识别GENERATED_BODY()移动组件,因此会在正确的代码下方显示红色波浪线——在你输入任何内容之前就出现了三个虚假错误。而 Visual Assist 可以读取 Unreal 的宏,正确地为代码类型着色,并确保“转到定义”、“查找引用”和“重命名”功能正常工作。
借助 Visual Assist

宏说明符自动补全,内联

UPROPERTY(在 `<div> ` 或 ` <span>`标签内开始输入UFUNCTION(,Visual Assist 会显示您可以使用的参数,每个参数都附有简短的功能说明。您无需再翻阅 Epic 的文档来回忆是 `<div>`EditAnywhere还是 `<span> EditDefaultsOnly`。Visual Studio 在此处不会显示任何内容,因为这些选项位于它无法读取的宏中。

UPROPERTY编辑│)
Λ VA · UPROPERTY 规范
EditAnywhere在编辑器中编辑 + PIE
S EditDefaultsOnly原型
S EditInstanceOnly实例
S VisibleAnywhere编辑器中只读
S BlueprintReadWrite获取和设置 BP
宏内部直接提供选项。Visual Assist会在您输入时建议您可以使用的限定符,并对每个限定符提供一行注释。
并排

虚幻引擎 C++ 功能详解

除了 Visual Studio 内置的 IntelliSense 之外,Visual Assist 读取你的 Unreal 项目时还有哪些变化?

Visual Studio IntelliSense 与 Visual Assist — Unreal Engine C++
任务 仅限Visual Studio IntelliSense Visual Studio和 Visual Assist
UE宏支持
UCLASS · UFUNCTION · UPROPERTY · USTRUCT
容易在虚幻引擎的宏和生成的.generated.h文件中出错。经常将正确的代码标记为错误。 直接读取虚幻引擎的宏,因此您的声明会正确显示。
前往定义 经常在宏生成的代码上失败,在大项目中情况会更糟。 直接跳转到定义,即使是宏添加的代码也是如此。
查找参考文献 Misses 使用隐藏在宏中的功能,并且在大项目中会丢失结果。 找到所有用法,包括宏添加的用法。
重命名/重构 在编写大量宏代码时容易出错,容易遗漏细节。 重命名整个项目,或者告诉你它无法访问哪些内容。
有效的UE代码上的红色波浪线 常见。虚假错误会出现在正确UCLASS代码中GENERATED_BODY Visual Assist 会读取宏,因此不会将正确的代码标记为错误代码。
大型代码库的性能 随着项目规模的增长,运行速度会变慢并出现卡顿。 即使在处理引擎级项目时也能保持快速运行,并在后台运行。
内联宏说明符文档 未提供。指定信息位于一个宏中,该宏无法读取。 建议您可以使用的规范,每个规范都附有简短说明。

获取 UE 宏的准确语法

VA 的解析器能够完全理解 Unreal 扩展代码语言的上下文,并相应地调整语法高亮和缩进。恼人的制表符、误报以及声明 UFUNCTION 和 UCLASS 时出现的无标签符号都已成为历史。

宏指定符补全

对于大多数 U*Macros,输入类型说明符的速度更快,且无需频繁查阅文档。如果您修改引擎或添加新的说明符,Visual Assist 也会检测到这些修改并添加相应的建议。

UE感知导航和重构

Visual Assist 可以读取 U*Macro 说明符,我们利用这一点使我们的功能更加智能。“跳转到”、“跳转到相关项”、“查找引用”、“重命名”和“更改签名”等功能都已扩展,以支持隐式方法。

不再有红色波浪线

Visual Studio 默认解析器的局限性之一是,它在处理游戏开发中常见的大型解决方案时表现不佳。借助 Visual Assist,您可以编写代码时避免出现各种错误的红色波浪线,并将内存节省下来用于其他任务。

来自 UE 基类的内联文档

虚幻引擎 C++ 的文档通常就隐藏在代码本身中。Visual Assist 能够理解虚幻引擎的扩展代码语言,因此可以显示基类和 U*Macro 说明符中的注释和对话框。

视觉辅助功能

适用于大型游戏项目的通用 C++ 特性。

打开并搜索文件(Shift+Alt+O)

VA 不会打开文件资源管理器,而是将解决方案中的所有项目列在一个对话框菜单中。它配备了强大的上下文感知搜索功能,因此您只需输入相关文件名或字符串即可找到关联文件——这对于游戏项目来说是一项极其有用的功能。

了解更多

查找符号(Shift+Alt+S)

利用高级筛选和排序功能,轻松浏览数千个符号:无论是在变量、类、结构体还是整个解决方案中。通过此对话框,您可以复制符号、跳转到该符号,甚至查找对该符号的所有引用。

了解更多

列出文件中的方法(Alt+M)

通过一个简单的下拉列表浏览当前文件中的类和方法。使用子字符串筛选列表。

了解更多

实现虚方法(Shift+Alt+Q)

在 C++ 或 C# 中,快速为接口方法或基类虚方法生成方法存根。此快捷键会打开“快速操作和重构”菜单,其中会根据光标所在位置或高亮显示的内容提供许多上下文相关的选项。

了解更多

打开相应文件(Alt+O)

这通常用于在头文件和实现文件之间快速切换。VA 的版本会在有多个目标位置时提供一个菜单。

了解更多

常见问题

是的。Visual Assist 完全支持 Visual Studio 中的 UE4 和 UE5 项目。它的解析器能够理解 UE 宏语法(包括 UCLASS、USTRUCT、UFUNCTION 和 UPROPERTY),从而在两个版本的引擎中都能提供精准的智能感知、语法高亮和导航功能。
Visual Studio 的内置解析器无法理解虚幻引擎的宏系统。UE 的反射宏(例如 UCLASS、UFUNCTION 等)会在编译时生成额外的隐藏代码,而默认解析器无法处理这些代码,从而导致出现错误的红色波浪线、高亮显示错误以及“跳转到定义”功能失效。Visual Assist 使用其自身的解析器,可以正确处理包含大量宏的 C++ 代码。
它解决了 Visual Studio 默认设置下一些不稳定的功能:UFUNCTION、UCLASS、USTRUCT 和 UPROPERTY 声明的准确语法高亮;宏说明符自动补全(输入 U*Macro 即可查看有效的宏说明符);能够识别虚幻引擎隐式方法的“查找引用”、“重命名”和“更改签名”功能;以及在大型虚幻引擎代码库中稳定运行的“跳转到定义”功能(而 IntelliSense 在大型代码库中通常会表现不佳)。
不会。Visual Assist 使用后台并行解析器来索引解决方案,而不会阻塞 IDE。大型虚幻引擎项目是其核心应用场景。大多数用户反馈 IDE 的启动时间和响应速度没有明显变化。
可以。VA Intelligence 在虚幻引擎项目中的运行方式与任何 C++ 项目相同。它运行在本地模型上——您的代码不会离开您的计算机——仅在您显式调用时才会触发,并且需要您审核并接受任何建议的更改后才会应用。
无需进行任何虚幻引擎特定的设置。安装 Visual Assist 后,在 Visual Studio 中打开您的虚幻引擎项目,VA 会立即在后台开始解析。虚幻引擎宏支持默认开启。安装过程不到五分钟。
有——30 天,完整产品,无需信用卡。安装包大小为 129 MB。

用户评价

“如果我失去双手,我可以用嘴打字。如果我的虚拟助手没了,我就完了。”

它不会替我编写代码,但它提供了工具,让我能够更快、更好地编写代码。我越来越喜欢 VA 代码检查功能,而提取方法确实很有帮助。

2022

“视觉辅助绝对必不可少。”

对于在 Visual Studio 中进行专业编程的人来说,Visual Assist 绝对是必不可少的……使用这些非常基础的功能所节省的时间是无法估量的,以至于任何人都没有理由在没有 Visual Assist 的情况下使用 Visual Studio。

2022

“非常棒的快速编码软件!”

“当我使用没有 Visual Assist 的 Visual Studio 时,我感觉自己受到了极大的限制。”

2022

“在处理大型代码库时,可视化辅助功能绝对是必不可少的。”

Visual Assist 大幅改进了 Visual Studio 内置的 Intellisense 系统。使用 Visual Assist 后,我​​发现自己花在梳理虚幻引擎代码以及自身代码上的时间大大减少。“搜索符号”功能还可以过滤掉引擎代码,从而快速找到自身代码中的符号。

2022

“大型项目表现良好,也方便日常工作流程。”

在我尝试过的几种大型项目中的替代方案中,这是性能最佳的解决方案。

2022

“一位真正的助手。”

错误更少,搜索次数更少,困惑也更少。它提供了我期望从现代智能感知中获得的功能。

2022

“如果我失去双手,我可以用嘴打字。如果我的虚拟助手没了,我就完了。”

它不会替我编写代码,但它提供了工具,让我能够更快、更好地编写代码。我越来越喜欢 VA 代码检查功能,而提取方法确实很有帮助。

2022

“视觉辅助绝对必不可少。”

对于在 Visual Studio 中进行专业编程的人来说,Visual Assist 绝对是必不可少的……使用这些非常基础的功能所节省的时间是无法估量的,以至于任何人都没有理由在没有 Visual Assist 的情况下使用 Visual Studio。

2022

“非常棒的快速编码软件!”

我认为VA在代码重构方面做得最好!它极大地帮助了我完成项目。我可以更快地编写代码,更快地交付成果。我想我已经对这款软件上瘾了,一天都离不开它!这是真的!

2022

“在处理大型代码库时,可视化辅助功能绝对是必不可少的。”

Visual Assist 大幅改进了 Visual Studio 内置的 Intellisense 系统。使用 Visual Assist 后,我​​发现自己花在梳理虚幻引擎代码以及自身代码上的时间大大减少。“搜索符号”功能还可以过滤掉引擎代码,从而快速找到自身代码中的符号。

2022

“大型项目表现良好,也方便日常工作流程。”

在我尝试过的几种大型项目中的替代方案中,这是性能最佳的解决方案。

2022

“一位真正的助手。”

错误更少,搜索次数更少,困惑也更少。它提供了我期望从现代智能感知中获得的功能。

2022

美好的事情时时发生。

Visual Assist 不断推出对 C++ 和虚幻引擎开发者极具价值的新功能。