{"id":258246,"date":"2022-06-22T11:20:48","date_gmt":"2022-06-22T10:20:48","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=rscpp&#038;p=258246"},"modified":"2022-08-09T17:15:18","modified_gmt":"2022-08-09T16:15:18","slug":"blueprint-support","status":"publish","type":"rscpp","link":"https:\/\/blog.jetbrains.com\/zh-hans\/rscpp\/2022\/06\/22\/blueprint-support","title":{"rendered":"Blueprint Support Comes to ReSharper C++"},"content":{"rendered":"<p>Blueprint files are written in binary form and are usually edited visually. However, they contain a lot of useful information for the developers of the C++ parts of games, since the Blueprint designers extend the baseline system implemented in C++ with Blueprint-specific markup. With all the Blueprint details, developers can avoid code changes that unexpectedly affect a game&#8217;s behavior.<\/p>\n<p>ReSharper C++ now reads Blueprints and offers new types of hints. The Blueprint hints allow you to see the bigger picture behind your code and be aware of derived Blueprint classes, <code>UFunction<\/code> implementations, and the write access and default values of <code>UProperties<\/code>.<\/p>\n<p align=\"center\"><a class=\"jb-download-button\" href=\"https:\/\/www.jetbrains.com\/resharper\/nextversion\/\" target=\"_blank\" rel=\"noopener\"><i class=\"download-icon\"><\/i>DOWNLOAD RESHARPER C++ 2022.2 EAP<\/a><\/p>\n<p>If there are derived Blueprint classes in your game, you can now see the corresponding hint right in the code editor. What\u2019s more, you can easily get the list of all inheritors. Just right-click the hint and select the derived classes option from the context menu or invoke <em>Find Usages<\/em> on a C++ class.<br \/>\n<img decoding=\"async\" alt=\"Derived Blueprint classes\" width=\"600\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/06\/blueprint_derived.png\"><\/p>\n<p>This also works for Unreal Engine functions. You can now get the details about <code>UFunctions<\/code> implemented in Blueprints from the new hint\u2019s context menu.<br \/>\n<img decoding=\"async\" alt=\"UFunctions implemented in Blueprints\" width=\"600\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/06\/blueprint_implementations.png\"><\/p>\n<p>Another new type of Blueprint hint allows you to quickly check the state of a <code>UProperty<\/code>, including whether it has been overridden, and what value is set in the Blueprint file.<br \/>\n<img decoding=\"async\" alt=\"UProperty values set in Blueprints\" width=\"600\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/06\/blueprint_uproperty.png\"><\/p>\n<p>You can configure the default visibility of Blueprint inlay hints on the dedicated <em>Environment | Inlay Hints | C++ | Unreal blueprint inlay hints<\/em> page of the ReSharper options.<\/p>\n<p>We\u2019ve also introduced two inspections to let you know if there are inconsistencies between the Blueprint-specific function specifiers used in the code and the Blueprints themselves:<\/p>\n<ul>\n<li>A <code>UFunction<\/code> with the <code>BlueprintCallable<\/code> function specifier is supposed to be used in a Blueprint, but no usages are found.<br \/>\n<img decoding=\"async\" alt=\"BlueprintCallable function is never used\" width=\"600\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/06\/blueprint_never_used.png\"><\/li>\n<li>A <code>UFunction<\/code> with the <code>BlueprintImplementableEvent<\/code> function specifier is supposed to be implemented in a Blueprint, but no implementations are found.<br \/>\n<img decoding=\"async\" alt=\"BlueprintImplementableEvent function is not implemented in any blueprint\" width=\"600\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/06\/blueprint_not_implemented.png\"><\/li>\n<\/ul>\n<p>Due to their possible performance impact, the Blueprint features are currently available only for ReSharper C++ in the 64-bit version of Visual Studio (VS 2022). You can turn them on or off at any time via the <em>Enable Blueprint Support<\/em> checkbox on the <em>Code Editing | C++ | Unreal Engine<\/em> page of the ReSharper options.<\/p>\n<p>Check out the new EAP build and share your feedback with us using our <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/RSCPP\" target=\"_blank\" rel=\"noopener\">issue tracker<\/a> or by posting in the comments below. Thank you!<\/p>\n<p align=\"center\"><a class=\"jb-download-button\" href=\"https:\/\/www.jetbrains.com\/resharper\/nextversion\/\" target=\"_blank\" rel=\"noopener\"><i class=\"download-icon\"><\/i>DOWNLOAD RESHARPER C++ 2022.2 EAP<\/a><\/p>\n<p>Your ReSharper C++ team<br \/>\n<em>JetBrains<\/em><br \/>\n<em>The Drive to Develop<\/em><\/p>\n","protected":false},"author":1053,"featured_media":258213,"comment_status":"closed","ping_status":"closed","template":"","categories":[826,89,601],"tags":[6978,600,91,2095],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/rscpp\/258246"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/rscpp"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/types\/rscpp"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/users\/1053"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/comments?post=258246"}],"version-history":[{"count":5,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/rscpp\/258246\/revisions"}],"predecessor-version":[{"id":258255,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/rscpp\/258246\/revisions\/258255"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media\/258213"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media?parent=258246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/categories?post=258246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/tags?post=258246"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/cross-post-tag?post=258246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}