使用 Visual Studio 2022 轻松进行虚幻引擎和 C++ 游戏开发

微软技术分享 微软全球最有价值专家
全栈领域优质创作者
博客专家认证
2024-03-13 19:16:28

介绍

创造精彩的游戏变得更加容易。我们非常高兴地宣布 Visual Studio 2022 中最新的虚幻引擎集成和强大的 C++ 生产力功能。我们的团队一直在不懈地努力吸收您的反馈,并带来更多功能,无论您是使用虚幻引擎还是使用虚幻引擎,都将增强您的游戏开发体验。专有引擎。

在本博客中,我们将探讨如何利用新的虚幻引擎测试适配器,它有助于简化您的测试过程,而无需离开 IDE。然后,我们还将向您展示如何使用虚幻引擎片段宏说明符建议更快地进行编码,以及查看内存中的位图。接下来,我们添加了一系列核心 C++ 生产力功能和调试器增强功能,这些功能不仅有利于那些使用虚幻引擎的人员,也有利于任何使用自己的引擎工作的人。最后,我们将通过 C++ IntelliSense 的更新和调试器启动性能改进来完善博客。

大多数生产力功能在 Visual Studio 2022 版本 17.8 中提供,而某些功能则在最新预览版中提供。我们相信这些功能将帮助您提高工作效率,并让您能够创造出更精彩的游戏。

下载 Visual Studio 2022 17.8

最新的虚幻引擎集成

设置虚幻引擎集成

虚幻引擎集成仅在您处理虚幻引擎项目时才会显示。为了确保这些功能处于活动状态,请仔细检查 Visual Studio 安装程序的“Gamedevelopment for C++”工作负载中是否启用了“IDE support for Unreal Engine”组件。某些集成(例如蓝图支持和测试适配器)将需要免费的“Visual Studio 集成工具”虚幻引擎插件。请参阅适用于虚幻引擎的 Visual Studio 工具了解详细的设置说明。

虚幻引擎测试适配器

特别感谢 Rare 的工作人员为此功能做出了巨大贡献。

借助虚幻引擎测试适配器,无需离开 IDE 即可简化您的测试流程。您现在可以发现、运行、管理和调试虚幻引擎测试。在 Visual Studio 2022 版本 17.8 中,打开 Visual Studio 时将自动看到虚幻引擎测试。要查看您的测试,您可以使用“视图”>“测试资源管理器”打开测试资源管理器。

使用虚幻引擎测试适配器需要最新版本的免费Visual Studio Tools for Unreal Engine插件。此外,确保在 Visual Studio 安装程序中启用“使用 C++ 进行游戏开发”工作负载中的“虚幻引擎测试适配器”组件。

虚幻引擎代码片段

使用虚幻引擎代码片段更高效地编写代码。在 Visual Studio 2022 版本 17.8 中,您可以在成员列表中找到常见的虚幻引擎构造作为代码片段。首先,输入任何虚幻引擎构造的名称,例如“uclass”。然后,按 Tab 或 Enter 展开该代码片段。

我们还为使用导出 API 和插件的人员提供了UCLASS(uclass, uclassexported)、UINTERFACE(uinterface, uinterfaceexported) 和(ustruct, ustructexported) 的导出版本。USTRUCT此外,根据您的反馈,我们还添加了SWidget(swidget)、TActorRange(tactorrange)、TObjectRange(tobjectrage) 和(witheditor) 等宏。WITH_EDITOR

支持的代码片段列表

uclass
uclassexported
uenum
ufunction
uinterface
uinterfaceexported
uproperty
ustruct
ustructexported
uelog
swidget
tactoreange
tobjectrange
witheditor

虚幻引擎项目的图像观察支持

我们很高兴地宣布,Image Watch for Visual Studio 2022现在支持虚幻引擎的FImage类型。Image Watch 是一个扩展,可让您在调试 C++ 代码时更轻松地查看内存中的位图。对于任何使用 C++ 处理图像的人来说,这是一个必不可少的工具。请务必立即尝试该扩展。

虚幻引擎宏说明符 IntelliSense

在接下来的几周内,虚幻引擎开发人员将逐步在 Visual Studio 2022 版本 17.8 中使用这一实验性功能。

我们最常收到的反馈之一是建议虚幻引擎宏说明符。我们很高兴与大家分享,宏说明符将开始出现在 Visual Studio 2022 版本 17.8 中反射宏的成员列表建议中。现在,您可以快速访问各个宏的所有可能的说明符,而无需依赖内存或在 Visual Studio 和文档之间来回切换。

改进了 Visual Studio 中的蓝图体验

在接下来的几周内,虚幻引擎开发人员将逐步在 Visual Studio 2022 版本 17.9 预览频道中访问此实验性功能。

Visual Studio 中的蓝图支持变得更加容易。您现在可以查看蓝图参考和资产属性,而无需安装 Visual Studio 集成工具插件。此更新消除了在收集蓝图信息之前构建游戏的要求。您会注意到处理蓝图引用的方式有了显着增强。Visual Studio 现在将以更少的计算机资源和更低的延迟显示 CodeLens 提示。接下来,我们添加了对直接在 CodeLens 结果中包含类层次结构之外的 UFUNCTION 用法的支持。最后,我们将缓存先前扫描的结果,并且仅处理自上次扫描以来新的或修改的资产。

改进了虚幻引擎项目的 IntelliSense

虚幻引擎使用自己的反射机制来连接其 C++ 和蓝图世界。这是通过使用虚幻标头工具 (UHT) 对 C++ 源进行自定义预处理并通过常规 C++ 预处理器注入来实现的。在 Visual Studio 2022 版本 17.9 Preview 1 中,我们通过确保一致性和准确性改进了虚幻引擎 IntelliSense 的处理。Visual Studio 中的 IntelliSense 现在可以更轻松地刷新 UHT 生成的文件,从而减少显示无根据的错误的可能性。

虚幻引擎宏缩进规则

在 Visual Studio 2022 版本 17.7 中,我们引入了针对反射宏和 slate 声明性语法的特殊缩进规则。我们一直在寻找改进的方法,并且很高兴听到社区的积极反馈。我们很想听听您对您认为应该考虑的任何其他虚幻引擎宏的想法。请在下面的评论中或在 X @VisualC上分享您的想法。

核心 C++ 生产力功能

感谢 AAA 游戏开发人员的惊人和积极的反馈,我们创建了许多核心 C++ 生产力功能,这将使所有 C++ 开发人员受益。

构建 Insights 函数视图

Build Insights 现已与 Visual Studio 2022 集成,并可与 MSBuild 和 CMake 项目配合使用。在 MSVC 的跟踪捕获技术的支持下,您现在可以在 Visual Studio 2022 版本 17.8 中查看与函数生成相关的其他信息。新的函数视图将为您提供函数在编译期间需要多长时间以及关联的 ForceInlines 数量。

转至“构建”菜单,启动 Build Insights .etl 跟踪捕获。

编译后,Build Insights 将创建一份诊断报告,显示函数生成时间和 ForceInlines 数量。

conststatic建议

Visual Studio 2022 版本 17.8 中的代码分析新增功能,您现在将看到 Visual Studio 显示将成员函数设为 const 和全局函数设为静态的建议。通过添加这两个功能,您将提高代码的一致性、可读性和安全性。有关详细信息,请参阅在 Visual Studio 中将成员函数设为 const 和全局函数 static

制作会员功能const

Visual Studio 将识别可以将成员函数设置为 const 的情况。这可以为函数的调用者提供额外的保证,并且还可以启用编译器的某些优化。仅当成员函数不改变对象的状态时才会提供 linter 建议。

该功能将建议通过在函数下方显示三个点来将成员函数设置为常量。当您将鼠标悬停在这些点上时,会出现一条消息,通知您可以将成员函数设置为 const。然后,您可以单击灯泡以使成员函数成为常量。更改将应用​​于具有所选成员函数的所有文件。

此功能默认启用。您可以通过转到“工具”>“选项”>“文本编辑器”>“C/C++”>“代码样式”>“Linter”来自定义这些建议的严重性。

创建全局函数static

现在,当全局函数可以标记为静态时,您将在 Visual Studio 中看到提示。静态函数的链接仅限于一个翻译单元,这可以通过允许编译器执行某些优化来帮助提高性能。作为奖励,这还可以防止由于内部链接而导致的命名冲突。该功能适用​​于现代 C++ 项目,并且不会对匿名命名空间中的函数提出建议。静态全局函数可以在定义它们的翻译单元内访问。

您将看到一个带有螺丝刀图标的建议,用于没有前向声明的全局函数。此建议将表明您可以将该函数设为静态。您可以通过单击螺丝刀图标并选择“使此函数静态”来使函数静态。

您还可以通过更改工具 > 选项 > 文本编辑器 > C/C++ > IntelliSense 中的设置来自定义此功能。

尺寸和对齐信息

在快速信息中查看尺寸和对齐方式

在 Visual Studio 2022 版本 17.8 中,只需将鼠标悬停在 C++ 中的任何类、结构体、联合、基类型或枚举的名称上,即可轻松查看其大小和对齐方式。不再需要滚动或搜索声明。只需将鼠标悬停即可一目了然地获取您需要的信息。此功能将帮助您用 C++ 编写更高效、更健壮的代码。

此功能默认启用。要访问设置,请转至工具 > 选项 > 文本编辑器 > C/C++ > IntelliSense。

#include指令

#include清理

感谢您的反馈,您现在可以使用 #include cleanup 删除未使用的标头、添加直接标头并帮助您维护干净的代码。为了最大限度地利用 #include 清理,我们建议首先使用直接包含建议,然后使用未使用的包含建议。

#include cleanup 默认是关闭的。您可以通过导航到“工具”>“选项”>“文本编辑器”>“C/C++”>“IntelliSense”并选择“启用#include cleanup”来启用它。启用后,您可以灵活地调整设置并配置不同的级别,以满足您的特定需求和偏好。

有关如何充分利用新的 #include 清理工具的详细信息,请参阅在 Visual Studio 中清理 C/C++ #includes

种类#include

在 Visual Studio 2022 版本 17.8 中,我们让你可以更轻松地根据你的喜好在 C++ 中组织 #include 指令。

您只需右键单击任何 #include 语句即可对它们进行排序,然后选择“对 #include 指令进行排序”选项。此外,您还可以使用代码清理功能自动对它们进行排序,您可以通过将“排序 #include 指令 (C++)”添加到“包含的修复程序”部分来配置该功能。对 #include 指令进行排序将帮助您管理依赖项、避免重复并提高代码质量。

您可以在工具 > 选项 > 文本编辑器 > C/C++ > 代码清理中配置包含清理和排序。  

#include诊断参考

在 Visual Studio 2022 版本 17.9 Preview 1 中,你将能够利用 #include 诊断引用来帮助你分析 #include 指令在 C++ 代码中的使用方式。您将看到代码库中每个#include 指令的引用数量和位置。

单击引用计数可查看引用列表,然后双击任何引用即可转到其位置。此功能可以极大地帮助您管理依赖项并避免重复。

Visual Studio 性能和调试器改进

缩短大型 C++ 项目的着色时间

在 Visual Studio 17.8 版中,我们的团队对大型项目的 C++ 文件中的 IntelliSense 和着色性能进行了显着增强。具体来说,我们提高了打开先前访问(缓存)文件时这些功能可用的速度。为了实现这一目标,我们将 IntelliSense 状态的加载重组为多个阶段,重点关注最关键信息的优先级。这包括着色和突出显示选定的参考,现在首先计算这些参考。这些优化的结果是,您将体验到更快、更高效的体验。

提高了 C++ 项目的调试启动速度

在 Visual Studio 版本 17.8 中,您将更快地启动调试器。我们通过优化断点设置,大幅增强了 Windows 应用程序的 F5 性能。例如,这种优化为虚幻编辑器项目带来了 20% 的显着速度提升。这些改进优化了模块内的文件存在检查,有利于调试带有构建过程中涉及的大量断点和文件的 C++ 代码。此外,我们还简化了 Windows PDB 加载过程,减少了找到 PDB 后加载它所需的时间。

检测工具:新的“从暂停收集开始”选项

在 Visual Studio 2022 版本 17.9 Preview 1 中,Instrumentation Tool 现在包含用于分析 C++ 应用程序的“从暂停收集开始”选项。通过此功能,您可以在分析器的控制下开始游戏,而无需立即收集数据。这使您可以在数据收集开始之前进入游戏。此外,您可以稍后在需要时通过点击记录按钮来恢复数据收集。

需要反馈!

借助 Visual Studio 2022 中最新的游戏开发人员生产力更新,我们旨在通过创新且强大的工具为游戏开发人员提供支持并提高他们的生产力。此版本是我们朝着简化游戏开发流程的愿景迈出的又一步。您的反馈对于塑造我们的发展道路发挥了重要作用。我们强烈鼓励您通过开发者社区、调查、X (@VisualC) 或发送电子邮件至 Visualcpp@microsoft.com 继续与我们分享您的想法和想法。感谢您一如既往的支持。我们可以共同利用 Visual Studio 2022 将游戏开发推向新的高度。

作者 | David Li
翻译 | RuiWang
出处 | 原文链接

...全文
779 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

4,539

社区成员

发帖
与我相关
我的任务
社区描述
微软技术社区为中国的开发者们提供一个技术干货传播平台,传递微软全球的技术和产品最新动态,分享各大技术方向的学习资源,同时也涵盖针对不同行业和场景的实践案例,希望可以全方位地帮助你获取更多知识和技能。
windowsmicrosoft 企业社区
社区管理员
  • 微软技术分享
  • 郑子铭
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

微软技术社区为中国的开发者们提供一个技术干货传播平台,传递微软全球的技术和产品最新动态,分享各大技术方向的学习资源,同时也涵盖针对不同行业和场景的实践案例,希望可以全方位地帮助你获取更多知识和技能。

予力众生,成就不凡!微软致力于用技术改变世界,助力企业实现数字化转型。

试试用AI创作助手写篇文章吧