PageSourceSearch

https://renderdoc.space/assets/js/11-DevelopSettings.html.fa70c653.js

js renderdoc.space collected 2026-10-03 23:21:36 UTC 20,546 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkrenderdoc=self.webpackChunkrenderdoc||[]).push([[1647],{13350:(n,s,a)=>{a.r(s),a.d(s,{comp:()=>u,data:()=>r});var t=a(20641);const e=a.p+"assets/img/preload-screen-diagram.4fdaf4a1.png",p=(0,t.Lk)("figure",null,[(0,t.Lk)("img",{src:e,alt:"",tabindex:"0",loading:"lazy"}),(0,t.Lk)("figcaption")],-1),o=(0,t.Fv)('<h2 id="方案1-isettingsmodule" tabindex="-1"><a class="header-anchor" href="#方案1-isettingsmodule"><span>方案1 ISettingsModule</span></a></h2><ol><li>模块激活/销毁时</li></ol><div class="language-cpp line-numbers-mode" data-ext="cpp" data-title="cpp"><pre class="language-cpp"><code>\n<span class="token keyword">void</span> <span class="token class-name">FCommonGameModule</span><span class="token double-colon punctuation">::</span><span class="token function">StartupModule</span><span class="token punctuation">(</span><span class="token punctuation">)</span>\n<span class="token punctuation">{</span>\n\t<span class="token function">RegisterSettings</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n<span class="token punctuation">}</span>\n<span class="token keyword">void</span> <span class="token class-name">FCommonGameModule</span><span class="token double-colon punctuation">::</span><span class="token function">ShutdownModule</span><span class="token punctuation">(</span><span class="token punctuation">)</span>\n<span class="token punctuation">{</span>\n\t<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token function">UObjectInitialized</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>\n\t<span class="token punctuation">{</span>\n\t\t<span class="token function">UnregisterSettings</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t<span class="token punctuation">}</span>\n<span class="token punctuation">}</span>\n</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ol start="2"><li>利用 FModuleManager拿到设置,并动态注册</li></ol><div class="language-cpp line-numbers-mode" data-ext="cpp" data-title="cpp"><pre class="language-cpp"><code><span class="token keyword">void</span> <span class="token class-name">FCommonGameModule</span><span class="token double-colon punctuation">::</span><span class="token function">RegisterSettings</span><span class="token punctuation">(</span><span class="token punctuation">)</span>\n<span class="token punctuation">{</span>\n\t<span class="token keyword">if</span> <span class="token punctuation">(</span>ISettingsModule<span class="token operator">*</span> SettingsModule <span class="token operator">=</span> FModuleManager<span class="token double-colon punctuation">::</span><span class="token generic-function"><span class="token function">GetModulePtr</span><span class="token generic class-name"><span class="token operator">&lt;</span>ISettingsModule<span class="token operator">&gt;</span></span></span><span class="token punctuation">(</span><span class="token string">&quot;Settings&quot;</span><span class="token punctuation">)</span><span class="token punctuation">)</span>\n\t<span class="token punctuation">{</span>\n\t\tISettingsSectionPtr UIManagerSettingsSection <span class="token operator">=</span> SettingsModule<span class="token operator">-&gt;</span><span class="token function">RegisterSettings</span><span class="token punctuation">(</span><span class="token string">&quot;Project&quot;</span><span class="token punctuation">,</span> <span class="token string">&quot;Game&quot;</span><span class="token punctuation">,</span> <span class="token string">&quot;UI Polic&quot;</span><span class="token punctuation">,</span>\n\t\t\t<span class="token function">LOCTEXT</span><span class="token punctuation">(</span><span class="token string">&quot;UINavigationSettingsName&quot;</span><span class="token punctuation">,</span> <span class="token string">&quot;UI Policy&quot;</span><span class="token punctuation">)</span><span class="token punctuation">,</span>\n\t\t\t<span class="token function">LOCTEXT</span><span class="token punctuation">(</span><span class="token string">&quot;UINavigationSettingsDescription&quot;</span><span class="token punctuation">,</span> <span class="token string">&quot;Configure the UI policy.&quot;</span><span class="token punctuation">)</span><span class="token punctuation">,</span>\n\t\t\t<span class="token generic-function"><span class="token function">GetMutableDefault</span><span class="token generic class-name"><span class="token operator">&lt;</span>UGameUIManagerSubsystem<span class="token operator">&gt;</span></span></span><span class="token punctuation">(</span><span class="token punctuation">)</span>\n\t\t<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n\t\t<span class="token keyword">if</span> <span class="token punctuation">(</span>UIManagerSettingsSection<span class="token punctuation">.</span><span class="token function">IsValid</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>\n\t\t<span class="token punctuation">{</span>\n\t\t\tUIManagerSettingsSection<span class="token operator">-&gt;</span><span class="token function">OnModified</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">BindRaw</span><span class="token punctuation">(</span><span class="token keyword">this</span><span class="token punctuation">,</span> <span class="token operator">&amp;</span>FCommonGameModule<span class="token double-colon punctuation">::</span>HandleSettingsSaved<span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t\t<span class="token punctuation">}</span>\n\t\t\n\t<span class="token punctuation">}</span>\n<span class="token punctuation">}</span>\n<span class="token keyword">void</span> <span class="token class-name">FCommonGameModule</span><span class="token double-colon punctuation">::</span><span class="token function">UnregisterSettings</span><span class="token punctuation">(</span><span class="token punctuation">)</span>\n<span class="token punctuation">{</span>\n\t<span class="token keyword">if</span> <span class="token punctuation">(</span>ISettingsModule<span class="token operator">*</span> SettingsModule <span class="token operator">=</span> FModuleManager<span class="token double-colon punctuation">::</span><span class="token generic-function"><span class="token function">GetModulePtr</span><span class="token generic class-name"><span class="token operator">&lt;</span>ISettingsModule<span class="token operator">&gt;</span></span></span><span class="token punctuation">(</span><span class="token string">&quot;Settings&quot;</span><span class="token punctuation">)</span><span class="token punctuation">)</span>\n\t<span class="token punctuation">{</span>\n\t\tSettingsModule<span class="token operator">-&gt;</span><span class="token function">UnregisterSettings</span><span class="token punctuation">(</span><span class="token string">&quot;Project&quot;</span><span class="token punctuation">,</span> <span class="token string">&quot;Game&quot;</span><span class="token punctuation">,</span> <span class="token string">&quot;UIPolicy&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t<span class="token punctuation">}</span>\n<span class="token punctuation">}</span>\n\n<span class="token keyword">bool</span> <span class="token class-name">FCommonGameModule</span><span class="token double-colon punctuation">::</span><span class="token function">HandleSettingsSaved</span><span class="token punctuation">(</span><span class="token punctuation">)</span>\n<span class="token punctuation">{</span>\n\t<span class="token generic-function"><span class="token function">GetMutableDefault</span><span class="token generic class-name"><span class="token operator">&lt;</span>UGameUIManagerSubsystem<span class="token operator">&gt;</span></span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">-&gt;</span><span class="token function">SaveConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\t<span class="token keyword">return</span> <span class="token boolean">true</span><span class="token punctuation">;</span>\n<span class="token punctuation">}</span>\n</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="方案2-继承-udevelopersettings或udevelopersettingsbackedbycvars" tabindex="-1"><a class="header-anchor" href="#方案2-继承-udevelopersettings或udevelopersettingsbackedbycvars"><span>方案2 继承 UDeveloperSettings或UDeveloperSettingsBackedByCVars</span></a></h2>',6),c=(0,t.Fv)('<div class="language-cpp line-numbers-mode" data-ext="cpp" data-title="cpp"><pre class="language-cpp"><code><span class="token function">UCLASS</span><span class="token punctuation">(</span>config<span class="token operator">=</span>Game<span class="token punctuation">,</span> defaultconfig<span class="token punctuation">,</span> meta<span class="token operator">=</span><span class="token punctuation">(</span>DisplayName<span class="token operator">=</span><span class="token string">&quot;Common Loading Screen&quot;</span><span class="token punctuation">)</span><span class="token punctuation">)</span>\n<span class="token keyword">class</span> <span class="token class-name">UCommonLoadingScreenSettings</span> <span class="token operator">:</span> <span class="token base-clause"><span class="token keyword">public</span> <span class="token class-name">UDeveloperSettingsBackedByCVars</span></span>\n<span class="token punctuation">{</span>\n\t<span class="token function">GENERATED_BODY</span><span class="token punctuation">(</span><span class="token punctuation">)</span>\n\n<span class="token keyword">public</span><span class="token operator">:</span>\n\t<span class="token function">UCommonLoadingScreenSettings</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n<span class="token keyword">public</span><span class="token operator">:</span>\n\n\t<span class="token function">UPROPERTY</span><span class="token punctuation">(</span>config<span class="token punctuation">,</span> EditAnywhere<span class="token punctuation">,</span> Category<span class="token operator">=</span>Display<span class="token punctuation">,</span> meta<span class="token operator">=</span><span class="token punctuation">(</span>MetaClass<span class="token operator">=</span><span class="token string">&quot;/Script/UMG.UserWidget&quot;</span><span class="token punctuation">)</span><span class="token punctuation">)</span>\n\tFSoftClassPath StartUpLoadingScreenWidget<span class="token punctuation">;</span>\n<span class="token punctuation">}</span>\n</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>',1),i=(0,t.Fv)('<div class="language-cpp line-numbers-mode" data-ext="cpp" data-title="cpp"><pre class="language-cpp"><code><span class="token comment">//拿到设置类</span>\n<span class="token keyword">const</span> UCommonLoadingScreenSettings<span class="token operator">*</span> Settings <span class="token operator">=</span> <span class="token generic-function"><span class="token function">GetDefault</span><span class="token generic class-name"><span class="token operator">&lt;</span>UCommonLoadingScreenSettings<span class="token operator">&gt;</span></span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n\n<span class="token comment">
1//动态修改</span>\n<span class="token keyword">const</span> UCommonLoadingScreenSettings<span class="token operator">*</span> Settings <span class="token operator">=</span> <span class="token generic-function"><span class="token function">GetMutableDefault</span><span class="token generic class-name"><span class="token operator">&lt;</span>UCommonLoadingScreenSettings<span class="token operator">&gt;</span></span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>',1),l={},u=(0,a(66262).A)(l,[["render",function(n,s){const a=(0,t.g2)("chatmessage"),e=(0,t.g2)("RouteLink");return(0,t.uX)(),(0,t.CE)("div",null,[(0,t.bF)(a,{avatar:"../../assets/emoji/hx.png",avatarWidth:40},{default:(0,t.k6)((()=>[(0,t.eW)(" 我经常能看到一些插件在编辑器中能设置一些属性,该怎么做? ")])),_:1}),(0,t.bF)(a,{avatar:"../../assets/emoji/bqb (2).png",avatarWidth:40,alignLeft:""},{default:(0,t.k6)((()=>[(0,t.Lk)("p",null,[(0,t.eW)("在这之前我们先来理解一下UE的启动流程,以及插件的启动流程"),(0,t.bF)(e,{to:"/unreal/ui_%E7%95%8C%E9%9D%A2_/slate_ui%E6%A1%86%E6%9E%B6_/1-editortoolPlugin.html"},{default:(0,t.k6)((()=>[(0,t.eW)("传送门")])),_:1})])])),_:1}),(0,t.bF)(a,{avatar:"../../assets/emoji/bqb (2).png",avatarWidth:40,alignLeft:""},{default:(0,t.k6)((()=>[(0,t.eW)(" 游戏启动时,显示四个不同的引擎预加载屏幕,每个引擎启动阶段一个屏幕。 ")])),_:1}),p,(0,t.bF)(a,{avatar:"../../assets/emoji/bqb (2).png",avatarWidth:40,alignLeft:""},{default:(0,t.k6)((()=>[(0,t.eW)(" 而设置可以分两种方案 ")])),_:1}),o,(0,t.bF)(a,{avatar:"../../assets/emoji/bqb (2).png",avatarWidth:40,alignLeft:""},{default:(0,t.k6)((()=>[(0,t.eW)(" UDeveloperSettingsBackedByCVars 是继承UDeveloperSettings的类,自动发现的 settings 对象的基类,其中部分或全部设置存储在控制台变量中,而不是 config 变量中。 ")])),_:1}),c,(0,t.bF)(a,{avatar:"../../assets/emoji/bqb (2).png",avatarWidth:40,alignLeft:""},{default:(0,t.k6)((()=>[(0,t.eW)(" 使用起来非常简单,只需要记得加个config宏标记即可 ")])),_:1}),(0,t.bF)(a,{avatar:"../../assets/emoji/bqb (2).png",avatarWidth:40,alignLeft:""},{default:(0,t.k6)((()=>[(0,t.eW)(" 可以通过GetDefault拿到类,也可以用GetMutableDefault动态修改 ")])),_:1}),i])}]]),r=JSON.parse('{"path":"/unreal/core_%E6%A0%B8%E5%BF%83_/11-DevelopSettings.html","title":"c11.DevelopSettings|编辑器配置属性","lang":"zh-CN","frontmatter":{"title":"c11.DevelopSettings|编辑器配置属性","order":1100,"category":["u++"],"description":"方案1 ISettingsModule 模块激活/销毁时 利用 FModuleManager拿到设置,并动态注册 方案2 继承 UDeveloperSettings或UDeveloperSettingsBackedByCVars","head":[["meta",{"property":"og:url","content":"https://rendertool.github.io/RenderDoc/unreal/core_%E6%A0%B8%E5%BF%83_/11-DevelopSettings.html"}],["meta",{"property":"og:site_name","content":"RenderDoc"}],["meta",{"property":"og:title","content":"c11.DevelopSettings|编辑器配置属性"}],["meta",{"property":"og:description","content":"方案1 ISettingsModule 模块激活/销毁时 利用 FModuleManager拿到设置,并动态注册 方案2 继承 UDeveloperSettings或UDeveloperSettingsBackedByCVars"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2025-04-05T11:07:11.000Z"}],["meta",{"property":"article:author","content":"Mr.Si"}],["meta",{"property":"article:modified_time","content":"2025-04-05T11:07:11.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"c11.DevelopSettings|编辑器配置属性\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2025-04-05T11:07:11.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Mr.Si\\",\\"url\\":\\"https://rendertool.github.io/RenderDoc/\\"}]}"]]},"headers":[{"level":2,"title":"方案1 ISettingsModule","slug":"方案1-isettingsmodule","link":"#方案1-isettingsmodule","children":[]},{"level":2,"title":"方案2 继承 UDeveloperSettings或UDeveloperSettingsBackedByCVars","slug":"方案2-继承-udevelopersettings或udevelopersettingsbackedbycvars","link":"#方案2-继承-udevelopersettings或udevelopersettingsbackedbycvars","children":[]}
1],"git":{"createdTime":1730368163000,"updatedTime":1743851231000,"contributors":[{"name":"sigaohe","email":"[email protected]","commits":2}]},"readingTime":{"minutes":1.4,"words":421},"filePathRelative":"unreal/core[核心]/11-DevelopSettings.md","localizedDate":"2024å¹´10月31日","excerpt":"\\n\\n\\n<figure><figcaption></figcaption></figure>\\n\\n<h2>方案1 ISettingsModule</h2>\\n<ol>\\n<li>模块激活/销毁时</li>\\n</ol>\\n<div class=\\"language-cpp\\" data-ext=\\"cpp\\" data-title=\\"cpp\\"><pre class=\\"language-cpp\\"><code>\\n<span class=\\"token keyword\\">void</span> <span class=\\"token class-name\\">FCommonGameModule</span><span class=\\"token double-colon punctuation\\">::</span><span class=\\"token function\\">StartupModule</span><span class=\\"token punctuation\\">(</span><span class=\\"token punctuation\\">)</span>\\n<span class=\\"token punctuation\\">{</span>\\n\\t<span class=\\"token function\\">RegisterSettings</span><span class=\\"token punctuation\\">(</span><span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">;</span>\\n<span class=\\"token punctuation\\">}</span>\\n<span class=\\"token keyword\\">void</span> <span class=\\"token class-name\\">FCommonGameModule</span><span class=\\"token double-colon punctuation\\">::</span><span class=\\"token function\\">ShutdownModule</span><span class=\\"token punctuation\\">(</span><span class=\\"token punctuation\\">)</span>\\n<span class=\\"token punctuation\\">
1{</span>\\n\\t<span class=\\"token keyword\\">if</span> <span class=\\"token punctuation\\">(</span><span class=\\"token function\\">UObjectInitialized</span><span class=\\"token punctuation\\">(</span><span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">)</span>\\n\\t<span class=\\"token punctuation\\">{</span>\\n\\t\\t<span class=\\"token function\\">UnregisterSettings</span><span class=\\"token punctuation\\">(</span><span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">;</span>\\n\\t<span class=\\"token punctuation\\">}</span>\\n<span class=\\"token punctuation\\">}</span>\\n</code></pre></div>","autoDesc":true}')}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.