{"id":4259,"date":"2021-10-08T14:42:58","date_gmt":"2021-10-08T06:42:58","guid":{"rendered":"http:\/\/blog.coolcoding.cn\/?p=4259"},"modified":"2021-10-08T14:57:47","modified_gmt":"2021-10-08T06:57:47","slug":"ue4%e6%b8%b8%e6%88%8f%e5%bc%80%e5%8f%91%e5%9f%ba%e7%a1%80%e5%91%bd%e4%bb%a4","status":"publish","type":"post","link":"https:\/\/blog.coolcoding.cn\/?p=4259","title":{"rendered":"UE4\u6e38\u620f\u5f00\u53d1\u57fa\u7840\u547d\u4ee4"},"content":{"rendered":"\n<p>\u8f6c\u8f7d\uff1ahttps:\/\/www.cnblogs.com\/kekec\/p\/8684068.html<\/p>\n\n\n\n<p>\u5728\u4e2a\u4eba\u7684Unrealengine\u8d26\u6237\u4e2d\u5173\u8054\u81ea\u5df1\u7684GitHub\u8d26\u6237\u6210\u529f\u4e4b\u540e\uff0c\u5c31\u53ef\u4ee5\u8bbf\u95eeUE4\u5f15\u64ce\u7684\u6e90\u7801\u4e86\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git clone -b release https:\/\/github.com\/EpicGames\/UnrealEngine.git<\/pre>\n\n\n\n<p>\u514b\u9686\u6210\u529f\u540e\uff0c\u6267\u884cSetup.bat\u62c9\u53d6\u5e76\u5b89\u88c5\u5916\u90e8\u4f9d\u8d56\u6587\u4ef6\uff08\u7b2c\u4e09\u65b9\u5e93\u3001\u8d44\u6e90\u5305\u3001\u793a\u4f8b\u5de5\u7a0b\u7b49\uff09\uff0c\u6700\u540e\u8c03\u7528UnrealVersionSelector\u6dfb\u52a0\u5f15\u64ce\u5230\u6ce8\u518c\u8868\u5e76\u5728\u8d44\u6e90\u7ba1\u7406\u5668\u4e2d\u6dfb\u52a0\u5f15\u64ce\u5feb\u6377\u83dc\u5355\u529f\u80fd<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\\Engine\\Binaries\\Win64\\UnrealVersionSelector-Win64-Shipping.exe\" \/register<\/pre>\n\n\n\n<p>\u82e5\u9700\u8981\u8bbe\u7f6e\u4ee3\u7406\u53ef\u4ee5\u4f20\u5165\u76f8\u5e94\u53c2\u6570\u6765\u6267\u884cSetup.bat\u811a\u672c&nbsp;\/\/ Setup.bat\u4f1a\u8c03\u7528Engine\\Binaries\\DotNET\\GitDependencies.exe\u5de5\u5177\u6765\u83b7\u53d6\u4f9d\u8d56\u6587\u4ef6<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Setup.bat --proxy=\"http:\/\/10.125.224.93:8082\" --force --exclude=Win32<\/pre>\n\n\n\n<p>\u6ce8\uff1a\u5982\u679c\u662fUE4.22\u7248\u672c\uff0c\u9700\u8981\u5b89\u88c5<a rel=\"noreferrer noopener\" href=\"https:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id=53321\" target=\"_blank\">.net\u00a0framework\u00a04.6.2<\/a>\uff0c\u5b89\u88c5\u5b8c\u540e\u5728\u63a7\u5236\u9762\u677f\u5378\u8f7d\u5217\u8868\u4e2d\u4f1a\u6709\u5982\u4e0b\u8f6f\u4ef6\u5217\u8868\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"402\" height=\"193\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image.png\" alt=\"\" class=\"wp-image-4260\"\/><\/figure>\n\n\n\n<p>\u6267\u884cGenerateProjectFiles.bat\u751f\u6210UE4\u76f8\u5173\u5de5\u7a0b\uff0c\u751f\u6210\u7684vs\u5de5\u7a0b\u6587\u4ef6\u5728Engine\\Intermediate\\ProjectFiles\u76ee\u5f55\u4e2d<\/p>\n\n\n\n<p>\u53cc\u51fbUE4.sln\uff0c\u5f00\u59cb\u7f16\u8bd1\u76f8\u5173\u5de5\u5177\u548c\u5f15\u64ce\u00a0\u00a0\/\/ \u7f16\u8bd1\u7684\u4e2d\u95f4\u6587\u4ef6\u751f\u6210\u5728EngineSource\\Engine\\Intermediate\\Build\u76ee\u5f55\u4e2d<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u7528\u6765\u5b58\u653eUE4\u5f15\u64ce\u548c\u9879\u76ee\u4ee3\u7801\u7684\u76ee\u5f55\u7684\u4e00\u4e9b\u6ce8\u610f\u70b9\uff1a<\/strong><\/h2>\n\n\n\n<p>1. \u76ee\u5f55\u7684\u5168\u8def\u5f84\u4e2d\u4e0d\u8981\u5305\u542b\u4e2d\u6587\u3001\u7a7a\u683c<\/p>\n\n\n\n<p>2.&nbsp;\u76ee\u5f55\u4e0d\u8981\u653e\u7f6e\u5f97\u592a\u6df1\uff0c\u4f1a\u5bfc\u81f4\u7f16\u8bd1\u94fe\u63a5\u7684\u547d\u4ee4\u884c\u592a\u957f\u7684\u9519\u8bef&nbsp; &nbsp;&nbsp;\u6ce8\uff1a\u53ef\u901a\u8fc7\u5728\u6a21\u5757\u7684Build.cs\u4e2d\u8bbe\u7f6ebLegacyPublicIncludePaths = false\u6765\u7f13\u89e3<\/p>\n\n\n\n<p>3. \u76ee\u5f55\u540d\u8981\u4ee5\u82f1\u6587\u6216\u4e0b\u5212\u7ebf\u5f00\u5934\uff08\u4e0d\u80fd\u4ee5\u6570\u5b57\u5f00\u5934\uff09\uff1a\u56e0\u4e3aUHT\u4f1a\u5229\u7528\u76ee\u5f55\u540d\u505a\u4e3a\u5176\u7b26\u53f7\u540d\uff08\u6ce8\uff1ac++\u4e2d\u53d8\u91cf\u540d\u3001\u51fd\u6570\u540d\u4e0d\u80fd\u4ee5\u6570\u5b57\u5f00\u5934\uff09\u7684\u4e00\u90e8\u5206<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u7f16\u8bd1UnrealBuildTool<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">\"C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\msbuild.exe\" \"%EngineDir%\\Engine\\Source\\Programs\\UnrealBuildTool\\UnrealBuildTool.csproj\" \/t:build \/p:Configuration=Development;Platform=AnyCPU;TargetFrameworkVersion=v4.5<\/pre>\n\n\n\n<p>mac\u4e0b\u4f7f\u7528mono\u63d0\u4f9b\u7684xbuild\u5de5\u5177\u7f16\u8bd1UnrealBuildTool<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/Users\/&lt;\u7528\u6237&gt;\/Engine\/Binaries\/ThirdParty\/Mono\/Mac\/bin\/xbuild \/Users\/&lt;\u7528\u6237&gt;\/Engine\/Source\/Programs\/UnrealBuildTool\/UnrealBuildTool.csproj \/property:Configuration=\"Development\" \/verbosity:quiet \/nologo<\/pre>\n\n\n\n<p>\u6ce8\uff1a\u5f53UnrealBuildTool\u4e0d\u5b58\u5728\u6216\u5176\u6e90\u7801\u6709\u4fee\u6539\u65f6\uff0c\u6267\u884c\u5f15\u64ce\u76ee\u5f55\u4e0b\u7684GenerateProjectFiles.bat\u6216GenerateProjectFiles.sh\u4f1a\u91cd\u65b0\u751f\u6210UnrealBuildTool<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u7f16\u8bd1\u5f15\u64ce\u5de5\u5177<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\\Engine\\Binaries\\DotNET\\UnrealBuildTool.exe\" ShaderCompileWorker Win64 Development -waitmutex -FromMsBuild -DEPLOY  \/\/ Windows\u4e0b\u7f16\u8bd1ShaderCompileWorker\n\n\"%EngineDir%\\Engine\\Binaries\\DotNET\\UnrealBuildTool.exe\" UnrealLightmass Win64 Development -waitmutex -FromMsBuild -DEPLOY  \/\/ Windows\u4e0b\u7f16\u8bd1UnrealLightmass\n\n\"%EngineDir%\\Engine\\Binaries\\DotNET\\UnrealBuildTool.exe\" UnrealIdentifierRegister Win64 Development -waitmutex -FromMsBuild -DEPLOY  \/\/ Windows\u4e0b\u7f16\u8bd1UnrealIdentifierRegister\n\n\"%EngineDir%\\Engine\\Binaries\\DotNET\\UnrealBuildTool.exe\" UnrealVersionSelector Win64 Development -waitmutex -FromMsBuild -DEPLOY  \/\/ Windows\u4e0b\u7f16\u8bd1UnrealVersionSelector\n\nmono $EngineDir\/Engine\/Binaries\/DotNET\/UnrealBuildTool.exe ShaderCompileWorker Mac Development  \/\/ Mac\u4e0b\u7f16\u8bd1ShaderCompileWorker<\/pre>\n\n\n\n<p>\u4f7f\u7528ShaderCompilerWorker.exe\u7f16\u8bd1shader<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">%EngineDir%\/Engine\/Binaries\/Win64\/ShaderCompileWorker.exe &lt;AppData&gt;\/Local\/Temp\/UnrealShaderWorkingDir\/BFE18CAA45FA658BF12AE489BE247311\/5\/ 27472 5 WorkerInputOnly.in WorkerOutputOnly.out -communicatethroughfile  -TimeToLive=20.000000 -Multiprocess<\/pre>\n\n\n\n<p>\u4f7f\u7528UnrealVersionSelector\u6dfb\u52a0\u5f15\u64ce\u5230\u6ce8\u518c\u8868\u5e76\u5728\u8d44\u6e90\u7ba1\u7406\u5668\u4e0a\u4e0b\u6587\u83dc\u5355\u4e2d\u6dfb\u52a0\u5f15\u64ce\u5feb\u6377\u529f\u80fd<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\\Engine\\Binaries\\DotNET\\UnrealVersionSelector.exe\" \/register\n<\/pre>\n\n\n\n<p>1. \u5bf9uproject\u6587\u4ef6\u8fdb\u884c\u53f3\u952e\u83dc\u5355\u6ce8\u518c<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"305\" height=\"88\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-1.png\" alt=\"\" class=\"wp-image-4262\"\/><\/figure>\n\n\n\n<p>2. \u6ce8\u518cuproject\u6587\u4ef6\u6240\u7528\u7684\u5f15\u64ce\u8def\u5f84<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"757\" height=\"329\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-2.png\" alt=\"\" class=\"wp-image-4263\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"694\" height=\"289\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-3.png\" alt=\"\" class=\"wp-image-4264\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u7f16\u8bd1\u5f15\u64ce\u548c\u9879\u76ee<\/strong><\/h2>\n\n\n\n<p>\u7f16\u8bd1Development\u7248\u672c\u7684UE4\u5f15\u64ce&nbsp;&nbsp;\/\/ \u4f1a\u5728%EngineDir%\\Binaries\\Win64\u548c%EngineDir%\\Plugins\\*\\\u00b7\u00b7\u00b7\\*\\Binaries\\Win64\u76ee\u5f55\u4e2d\u751f\u6210\u5f15\u64ceUE4Editor.exe\u3001\u6838\u5fc3dll\u6a21\u5757\u548c\u5f15\u64ce\u63d2\u4ef6dll<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\\Engine\\Binaries\\DotNET\\UnrealBuildTool.exe\" UE4Editor Win64 Development -waitmutex -FromMsBuild -DEPLOY<\/pre>\n\n\n\n<p>\u751f\u6210\u4e86UE4.sln\u6216UE4.xcworkspace\uff0c\u4e5f\u53ef\u4ee5\u4f7f\u7528msbuild.exe\u6216xcodebuild\u6765\u7f16\u8bd1&nbsp;&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ vs2017\u7684msbuild\u6240\u5728\u76ee\u5f55\uff1aMicrosoft Visual Studio\\2017\\Community\\MSBuild\\15.0\\Bin\nmsbuild.exe UE4.sln \/p:Configuration=\"Development Editor\" \/p:Platform=Win64 \/m:8  \/\/ \u4f7f\u7528\u5e76\u53d1\u7ebf\u7a0b\u6570\u4e3a8\uff0c\u7f16\u8bd1\u914d\u7f6e\u4e3a\uff1aDevelopment Editor Win64\u6765\u7f16\u8bd1\u751f\u6210UE4Editor.exe\n\nxcodebuild -workspace UE4.xcworkspace\/ -scheme UE4 -configuration \"Development Editor\" \/\/ xcode\u4e0b\u7f16\u8bd1Development Editor\u7684UE4Editor<\/pre>\n\n\n\n<p>xcode\u7f16\u8bd1\u51fa\u7684UE4Editor\u6240\u5728\u76ee\u5f55\uff1a%EngineDir%\/Binaries\/Mac\/UE4Editor.app\/Contents\/MacOS\/UE4Editor<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"726\" height=\"327\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-4.png\" alt=\"\" class=\"wp-image-4265\"\/><\/figure>\n\n\n\n<p> \u751f\u6210\u9879\u76eeMyGame\u7684\u9879\u76ee\u5de5\u7a0b\u6587\u4ef6\u00a0\u00a0\/\/ \u5de5\u7a0b\u6587\u4ef6\u4f1a\u751f\u6210\u5230&#8221;%GameDir%\\Intermediate\\ProjectFiles&#8221;\u76ee\u5f55\u4e2d\u00a0 <\/p>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\\Engine\\Binaries\\Win64\\UnrealVersionSelector.exe\" \/projectfiles \"%GameDir%\\MyGame.uproject\"   \/\/windows\u4e0b\n\n\"%EngineDir%\/Engine\/Binaries\/DotNET\/UnrealBuildTool.exe\"  -projectfiles -project=\"%GameDir%\\MyGame.uproject\" -game -engine -progress -log=\"%GameDir%\/Saved\/Logs\/UnrealVersionSelector-2020.12.31-11.34.19.log\"  \/\/windows\u4e0b\n\n\"%EngineDir%\/Engine\/Binaries\/DotNET\/UnrealBuildTool.exe\"  -projectfiles -project=\"%GameDir%\\MyGame.uproject\" -game -engine -VSCode   \/\/windows\u4e0b\u751f\u6210vscode\u9879\u76ee\u5de5\u7a0b\n\n\"%EngineDir%\/Engine\/Binaries\/DotNET\/UnrealBuildTool.exe\"  -projectfiles -project=\"%GameDir%\\MyGame.uproject\" -game -engine -2019  \/\/windows\u4e0b\u751f\u6210vs2019\u9879\u76ee\u5de5\u7a0b\n\n\"%EngineDir%\/GenerateProjectFiles.sh\" -project=\"%GameDir%\/MyGame.uproject\" -Game -Engine \/\/ Mac\u6216Linux\u4e0b\n\n\"%EngineDir%\/GenerateProjectFiles.sh\" -project=\"%GameDir%\/MyGame.uproject\" -platforms=IOS -game -nointellisense -IOSdeployonly -ignorejunk -projectfileformat=XCode -includetemptargets  \/\/ Mac\u4e0b\u4e13\u6709IOS\u5de5\u7a0b<\/pre>\n\n\n\n<p>\u6ce8\uff1awindows\u4e0b\uff0c\u53ef\u5728UE4\u7f16\u8f91\u5668\u83dc\u5355File &#8212; Refresh Visual Studio Project\u6765\u751f\u6210\u6216\u5237\u65b0vs\u9879\u76ee\u6587\u4ef6\uff1b\u5728Mac\u4e0b\uff0c\u53ef\u5728UE4\u7f16\u8f91\u5668\u83dc\u5355File &#8212; Refresh XCode Project\u6765\u751f\u6210\u6216\u5237\u65b0xCode\u9879\u76ee\u6587\u4ef6&nbsp; &nbsp; &nbsp; \u3010\u4e0e\u4e0a\u9762\u547d\u4ee4\u662f\u7b49\u4ef7\u7684\u3011<\/p>\n\n\n\n<p>\u7f16\u8bd1\u9879\u76eeMyGame\u7684Development Editor\u7248\u672c&nbsp;&nbsp;\/\/ \u4f1a\u5728%GameDir%\\Binaries\\Win64\u548c%GameDir%\\Plugins\\*\\\u00b7\u00b7\u00b7\\*\\Binaries\\Win64\u76ee\u5f55\u4e2d\u751f\u6210\u9879\u76eedll\u548c\u9879\u76ee\u63d2\u4ef6dll<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\\Engine\\Binaries\\DotNET\\UnrealBuildTool.exe\" MyGameEditor Win64 Development \"%GameDir%\\MyGame.uproject\" -waitmutex -FromMsBuild -DEPLOY \/\/ windows\u4e0b\n\n$EngineDir\/Engine\/Build\/BatchFiles\/Mac\/XcodeBuild.sh MyGameEditor macosx Development %GameDir%\/MyGame.uproject \/\/ Mac\u4e0b\n\nmono $EngineDir\/Engine\/Binaries\/DotNET\/UnrealBuildTool.exe  MyGameEditor macosx Development %GameDir%\/MyGame.uproject \/\/ Mac\u4e0b<\/pre>\n\n\n\n<p>\u7f16\u8bd1\u9879\u76eeMyGame\u7684Development Android\u7248\u672c\uff08libUE4.so\uff09&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">UnrealBuildTool.exe  MyGame Android Development -Project=%GameDir%\\MyGame.uproject\"<\/pre>\n\n\n\n<p>\u7f16\u8bd1\u9879\u76eeMyGame\u7684Debug IOS\u7248\u672c\uff08MyGame\u53ef\u6267\u884c\u4e8c\u8fdb\u5236\uff09&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mono $EngineDir$\/Engine\/Binaries\/DotNET\/UnrealBuildTool.exe MyGame IOS Debug -Project=$GameDir$\/MyGame.uproject<\/pre>\n\n\n\n<p>\u9047\u5230\u7684\u95ee\u9898\uff1ald:&nbsp;can&#8217;t&nbsp;open&nbsp;-unexported_symbols_list&nbsp;file:&nbsp;\/Users\/xxx\/Trunk\/UAGroup\/MyGame\/unexported_symbols.txt&nbsp;<\/p>\n\n\n\n<p>\u89e3\u51b3\u65b9\u6cd5\uff1a\u5728\u8be5\u76ee\u5f55\u4e0b\u653e\u7f6e\u4e00\u4e2aunexported_symbols.txt\u6587\u4ef6\uff0c\u91cc\u9762\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">*TSS*\n*Tss*\n*tss*\n*AceSDK*\n*MRPCS*\n*mrpcs*\n*tp2*\n*tcj*\n*_proto*\n*ns_tinyxml*<\/pre>\n\n\n\n<p>\u7f16\u8bd1\u5355\u4e2ac\/cpp\u6587\u4ef6<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\\Engine\\Binaries\\DotNET\\UnrealBuildTool.exe\"  MyGameEditor Win64 Development \"%GameDir%\\MyGame.uproject\" -singlefile=\"%GameDir%\\Source\\MyGame\\MyGameCharacter.cpp\" -WaitMutex -FromMsBuild -DEPLOY<\/pre>\n\n\n\n<p>\u7f16\u8bd1\u5355\u4e2a\u6a21\u5757<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\\Engine\\Binaries\\DotNET\\UnrealBuildTool.exe\" -Module=MyGame Win64 Development -TargetType=Editor -Project=\"%GameDir%\\MyGame.uproject\" -canskiplink \"%GameDir%\\MyGame.uproject\"<\/pre>\n\n\n\n<p>\u7f16\u8bd1\u5355\u4e2a\u5f15\u64ce\u6a21\u5757<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\\Engine\\Binaries\\DotNET\\UnrealBuildTool.exe\" -Module=Engine Win64 Development -TargetType=Editor -Project=\"%GameDir%\\MyGame.uproject\" -canskiplink -nosharedpch \"%GameDir%\\MyGame.uproject\"<\/pre>\n\n\n\n<p>\u7f16\u8bd1\u591a\u4e2a\u6a21\u5757&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\\Engine\\Binaries\\DotNET\\UnrealBuildTool.exe\" -Module=MyCommon -Module=MyGame Win64 Development -TargetType=Editor -Project=\"%GameDir%\\MyGame.uproject\" -canskiplink \"%GameDir%\\MyGame.uproject\"&nbsp;<\/pre>\n\n\n\n<p>\u6ce81\uff1a\u66f4\u591a\u989d\u5916\u547d\u4ee4\u884c\u53c2\u6570\u89c1UnrealBuildTool\u4e2d\u7684GlobalOptions\u7c7b\u4e2d\u7684CommandLine\u4fee\u9970\u7684\u6210\u5458\u53d8\u91cf<\/p>\n\n\n\n<p>-Verbose\u3001-VeryVerbose\u3001-Log\u3001-Timestamps\u3001-Progress\u3001-NoMutex\u3001-RemoteIni\u3001-SkipDeploy\u3001-Clean\u3001<\/p>\n\n\n\n<p>-ProjectFiles\u3001-ProjectFileFormat=\u3001-Makefile\u3001-CMakefile\u3001-QMakefile\u3001-KDevelopfile\u3001-CodeliteFiles\u3001-XCodeProjectFiles\u3001-EdditProjectFiles\u3001-VSCode\u3001-VSMac\u3001-CLion<\/p>\n\n\n\n<p>\u6ce82\uff1a\u66f4\u591a\u989d\u5916\u547d\u4ee4\u884c\u53c2\u6570\u89c1UnrealBuildTool\u4e2d\u7684TargetDescriptor\u7c7b\u4e2d\u7684CommandLine\u4fee\u9970\u7684\u6210\u5458\u53d8\u91cf<\/p>\n\n\n\n<p>-NoHotReload\u3001-ForceHotReload\u3001-LiveCoding\u3001-WriteActions=c:\\myAction.txt&nbsp;\uff08\u8f93\u51fa\u7f16\u8bd1\u94fe\u63a5\u8fc7\u7a0b\u4e2d\u8be6\u7ec6\u4fe1\u606f\uff09<\/p>\n\n\n\n<p>-mode=JsonExport\uff08\u8bfb\u53d6\u6240\u6709build.cs\uff0c\u8f93\u51famodules\u7684\u4f9d\u8d56\u5173\u7cfb\uff09\u3001-LiveCodingModules=modulelist.txt\u3001-LiveCodingManifest=mymenifest.txt\u3001-Quiet<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ \u7f16\u8bd1\u94fe\u63a5\u51faso\u6587\u4ef6\uff0c\u53e6\u5916\u8bb0\u5f55\u7f16\u8bd1\u94fe\u63a5\u5404\u547d\u4ee4\u884c\u7684\u65e5\u5fd7\u6587\u4ef6\u4f1a\u8f93\u51fa\u5728c:\\svn\\myAction.txt\nC:\\svn\\UnrealEngine\\Engine\\Binaries\\DotNET\\UnrealBuildTool.exe  UAGame Android Shipping -Project=\"C:\\svn\\R6Game\\UAGame.uproject\" -WriteActions=\"c:\\svn\\myAction.txt\"\n\n\/\/ \u4e0d\u4f1a\u7f16\u8bd1\u94fe\u63a5\u51faso\u6587\u4ef6\uff0cjson\u6587\u4ef6\u4f1a\u8f93\u51fa\u5728C:\\svn\\R6Game\\Binaries\\Android\\UAGame-Android-Shipping.json\nC:\\svn\\UnrealEngine\\Engine\\Binaries\\DotNET\\UnrealBuildTool.exe  UAGame Android Shipping -Project=\"C:\\svn\\R6Game\\UAGame.uproject\" -mode=JsonExport<\/pre>\n\n\n\n<p>\u7f16\u8bd1\u9879\u76eeMyGame\u7684\u5ba2\u6237\u7aef\u7248\u672c<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\\Engine\\Binaries\\Win64\\UnrealVersionSelector.exe\" MyGame Win64 Development -Project=\"%GameDir%\\MyGame.uproject\"<\/pre>\n\n\n\n<p>\u7f16\u8bd1\u9879\u76eeMyGame\u7684Linux Server\u7248\u672c<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mono \"%EngineDir%\\Engine\\Binaries\\DotNET\\UnrealBuildTool.exe\" MyGameServer Linux Development -Project=\"%GameDir%\\MyGame.uproject\"<\/pre>\n\n\n\n<p>\u6784\u5efa\u5b89\u88c5\u7248\u5f15\u64ce<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">%EngineDir%\\Engine\\Build\\BatchFiles\\RunUAT.bat BuildGraph -target=\"Make Installed Build Win64\" -script=Engine\/Build\/InstalledEngineBuild.xml -set:WithMac=false -set:WithAndroid=false -set:WithIOS=false -set:WithTVOS=false -set:WithLinux=false -set:WithHTML5=false -set:WithSwitch=false -WithDDC=false -set:WithWin32=false -set:WithLumin=false -set:WithPS4=false -set:WithXboxOne=false -set:WithHoloLens=false -set:GameConfigurations=Development<\/pre>\n\n\n\n<p>\u914d\u7f6e\u6587\u4ef6\u8be6\u89c1 \uff1a<a href=\"https:\/\/github.com\/EpicGames\/UnrealEngine\/blob\/release\/Engine\/Build\/InstalledEngineBuild.xml\" target=\"_blank\" rel=\"noreferrer noopener\">Engine\/Build\/InstalledEngineBuild.xml<\/a><\/p>\n\n\n\n<p>\u6784\u5efa\u597d\u7684\u5b89\u88c5\u7248\u5f15\u64ce\u5728\uff1a%EngineDir%\\LocalBuilds\\Engine\\Windows\u76ee\u5f55\u4e2d<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"564\" height=\"170\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-5.png\" alt=\"\" class=\"wp-image-4266\"\/><\/figure>\n\n\n\n<p>\u6ce81\uff1a\u53ef\u653e\u7f6e\u4e00\u4e2a%EngineDir%\/Engine\/Build\/InstalledBuild.txt\u7a7a\u6587\u4ef6\uff0c\u5c06\u5f53\u524d\u5f15\u64ce\u6807\u8bc6\u6210\u4e00\u4e2aInstalledEngine<\/p>\n\n\n\n<p>\u6ce82\uff1aInstalledEngine\u4e3b\u8981\u7528\u6765\u63d0\u5347\u56e2\u961f\u5f00\u53d1\u6548\u7387\uff0c\u8ba9\u6784\u5efa\u673a\u751f\u4ea7\u597d\u8fd9\u4e9b\u4e8c\u8fdb\u5236\u5185\u5bb9\uff0c\u800c\u4e0d\u9700\u8981\u6bcf\u4e2a\u4eba\u90fd\u6765\u7f16\u8bd1\u4e00\u904d\u3002<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; \u2460 \u5f15\u64ce\u7f16\u8f91\u5668\uff08UE4Editor.exe\uff09\u3001\u6784\u5efa\u5de5\u5177\u94fe\uff08UBT\u3001UHT\u3001UAT\uff09\u4ee5\u53ca\u7b2c\u4e09\u65b9\u5de5\u5177\uff08UnrealPak.exe\u3001ShaderCompileWorker.exe\u3001UnrealLightmass.exe\u7b49\uff09<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\uff08a\uff09\u5f15\u64ce\u7f16\u8f91\u5668\u3001\u7b2c\u4e09\u65b9\u5de5\u5177\u548cUHT&nbsp; &nbsp; &nbsp;\u5728%EngineDir%\/Engine\/Binaries\/Win64\u76ee\u5f55\u4e2d<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\uff08b\uff09UBT\u3001UAT&nbsp; &nbsp; &nbsp;\u5728%EngineDir%\/Engine\/Binaries\/DotNET\u76ee\u5f55\u4e2d<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; \u2461 \u5f15\u64ce\u53ca\u9879\u76ee\u4f9d\u8d56\u7684\u6240\u6709\u6a21\u5757\u7684.h\u3001.generated.h\u3001.lib\u3001.dll\u6587\u4ef6<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\uff08a\uff09.h&nbsp; &nbsp; &nbsp;\u5728%EngineDir%\/Engine\/Source\u3001%EngineDir%\/Engine\/Plugins\/&lt;xxx&gt;\/Source\u76ee\u5f55\u4e2d<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\uff08b\uff09.generated.h\u3001.lib&nbsp; &nbsp; &nbsp;\u5728%EngineDir%\/Engine\/Intermediate\u3001%EngineDir%\/Engine\/Plugins\/&lt;xxx&gt;\/Intermediate\u76ee\u5f55\u4e2d<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\uff08c\uff09.dll&nbsp; &nbsp; &nbsp;\u5728%EngineDir%\/Engine\/Binaries\/Win64\u3001%EngineDir%\/Engine\/Plugins\/&lt;xxx&gt;\/Binaries\/Win64\u76ee\u5f55\u4e2d<\/p>\n\n\n\n<p>\u6ce83\uff1acpp\u4ee3\u7801\u4e0d\u662f\u5fc5\u987b\u7684<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>UnrealPak<\/strong><\/h2>\n\n\n\n<p>\u89e3\u538b\u672a\u52a0\u5bc6\u7684MyGame-Android_ASTC.pak\u5305\u5230%Output%\/MyGame-Android_ASTC\u76ee\u5f55\u4e2d<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">%EngineDir%\/Engine\/Binaries\/Win64\/UnrealPak.exe \"%MyGame-arm64-es2%\/assets\/MyGame\/Content\/Paks\/MyGame-Android_ASTC.pak\" -Extract \"%Output%\/MyGame-Android_ASTC\"<\/pre>\n\n\n\n<p>\u6709Crypto.json\u79d8\u94a5\u6587\u4ef6\u65f6\uff0c\u89e3\u538b\u52a0\u5bc6\u7684MyGame-Android_ASTC.pak\u5305\u5230%Output%\/MyGame-Android_ASTC\u76ee\u5f55\u4e2d<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">%EngineDir%\/Engine\/Binaries\/Win64\/UnrealPak.exe \"%MyGame-arm64-es2%\/assets\/MyGame\/Content\/Paks\/MyGame-Android_ASTC.pak\" -Extract \"%Output%\/MyGame-Android_ASTC\" -cryptokeys=\"%GameDir%\/Saved\/Cooked\/Android_ASTC\/MyGame\/Metadata\/Crypto.json\"<\/pre>\n\n\n\n<p>\u65e0Crypto.json\u79d8\u94a5\u6587\u4ef6\u65f6\uff0c\u89e3\u538b\u52a0\u5bc6\u7684MyGame-Android_ASTC.pak\u5305\u5230%Output%\/MyGame-Android_ASTC\u76ee\u5f55\u4e2d<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">%EngineDir%\/Engine\/Binaries\/Win64\/UnrealPak.exe \"%MyGame-arm64-es2%\/assets\/MyGame\/Content\/Paks\/MyGame-Android_ASTC.pak\" -Extract \"%Output%\/MyGame-Android_ASTC\" -encryptindex -encryptionini -projectdir=\"%GameDir%\" -enginedir=\"%EngineDir%\" -Platform=Windows<\/pre>\n\n\n\n<p>\u6ce81\uff1a\u8be5\u65b9\u5f0f\u4f1a\u901a\u8fc7\u8bfb\u53d6%GameDir%\/Config\/DefaultCrypto.ini\u4e2d\u7684\u79d8\u94a5\u6765\u89e3\u5bc6<\/p>\n\n\n\n<p>\u6ce82\uff1a\u9700\u8981\u5728\u9879\u76ee\u7684%GameDir%\/Config\/DefaultEngine.ini\u4e2d\u8fdb\u884c\u5982\u4e0b\u914d\u7f6e\uff0c\u6765\u5c06\u9879\u76ee\u6807\u8bc6\u4e3a\u4e00\u4e2a\u52a0\u5bc6\u7c7b\u578b<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"421\" height=\"104\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-6.png\" alt=\"\" class=\"wp-image-4267\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>UHT\u626b\u63cf\u5934\u6587\u4ef6\u547d\u4ee4\u884c<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\">\/\/ UHT\u626b\u63cfUE4\u5de5\u7a0b\n\"%EngineDir%\\Engine\\Binaries\\Win64\\UnrealHeaderToo.exe\" UE4Editor \"%EngineDir%\\Engine\\Intermediate\\Build\\Win64\\UE4Editor\\DebugGame\\UE4Editor.uhtmanifest\" -LogCmds=\"loginit warning, logexit warning, logdatabase error\" -Unattended -WarningsAsErrors -abslog=\"%EngineDir%\\Engine\\Programs\\UnrealBuildTool\\Log_UHT.txt\" \n\n\/\/ UHT\u626b\u63cfMyGame\u9879\u76ee\u5de5\u7a0b\n\"%EngineDir%\\Engine\\Binaries\\Win64\\UnrealHeaderTool.exe\" \"%GameDir%\\MyGame.uproject\" \"%GameDir%\\Intermediate\\Build\\Win64\\MyGameEditor\\DebugGame\\MyGameEditor.uhtmanifest\" -LogCmds=\"loginit warning, logexit warning, logdatabase error\" -Unattended -WarningsAsErrors -abslog=\"%EngineDir%\\Engine\\Programs\\UnrealBuildTool\\Log_UHT.txt\"\n\n\/\/ UHT\u626b\u63cfShaderCompileWorker\u5de5\u7a0b\n\"%EngineDir%\\Engine\\Binaries\\Win64\\UnrealHeaderTool.exe\" ShaderCompileWorker \"%EngineDir%\\Engine\\Intermediate\\Build\\Win64\\ShaderCompileWorker\\Development\\ShaderCompileWorker.uhtmanifest\" -LogCmds=\"loginit warning, logexit warning, logdatabase error\" -Unattended -WarningsAsErrors -abslog=\"%EngineDir%\\Engine\\Programs\\UnrealBuildTool\\Log_UHT.txt\"<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u4e00\u4e9blog<\/strong><\/h2>\n\n\n\n<p>UnrealHeaderTool\uff1aUnrealEngine\\Engine\\Programs\\UnrealHeaderTool\\Saved\\Logs\\UnrealHeaderTool.log<\/p>\n\n\n\n<p>UnrealBuildTool\uff1aUnrealEngine\\Engine\\Programs\\UnrealBuildTool\\Log.txt<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;AppData\\Local\\UnrealBuildTool\\Log.txt\uff08InstalledEngine\uff09<\/p>\n\n\n\n<p>UAT\uff1aUnrealEngine\\Engine\\Programs\\AutomationTool\\Saved\\Logs\\Log.txt<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;UnrealEngine\\Engine\\Programs\\AutomationTool\\Saved\\Logs\\Cook-2020.07.13-17.32.30.txt<\/p>\n\n\n\n<p>MyGame\uff1aMyGame\\Saved\\Logs\\MyGame.log<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Mac osx\u4e0a\u7684log<\/strong><\/h2>\n\n\n\n<p>UnrealHeaderTool\uff1a~\\Library\\Logs\/Unreal Engine\/UnrealHeaderTool\/UnrealHeaderTool.log<\/p>\n\n\n\n<p>UnrealBuildTool\uff1aUnrealEngine\\Engine\\Programs\\UnrealBuildTool\\Log.txt<\/p>\n\n\n\n<p>UAT\uff1a~\\Library\\Logs\/Unreal Engine\/LocalBuildLogs\u4e2d\uff0c\u5305\u542b\u4e00\u4e0b\u4e00\u4e9b\u6587\u4ef6<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Cook-2020.07.13-17.46.05.txt   \/\/ Cook\u8d44\u6e90\u7684log\nFinalCopy_NonUFSFiles.txt\nFinalCopy_NonUFSFilesDebug.txt\nFinalCopy_UFSFiles.txt\nLog.txt    \/\/ \u7f16\u8bd1ios\u7248\u672c\u7684log\nManifest_NonUFSFiles_IOS.txt\nPakList_basicasset-ios.txt\nPakList_uagame-ios.txt\nPrePak_IOS_NonUFSFiles.txt\nPrePak_IOS_NonUFSFilesDebug.txt\nPrePak_IOS_UFSFiles.txt\nUBT-UAGame-IOS-Development.txt\nUBT-UnrealPak-Mac-Development.txt\nUnrealPak-basicasset-ios-2020.07.13-17.47.12.txt\nUnrealPak-uagame-ios-2020.07.13-17.47.12.txt<\/pre>\n\n\n\n<p>\n\nMyGame\uff1a~\\Library\\Logs\/Unreal Engine\/MyGameEditor\/MyGame.log\n\n<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u4e00\u4e9b\u6280\u5de7<\/strong><\/h2>\n\n\n\n<p>\n\n\uff081\uff09\u4e0d\u8981\u628aDDC\uff08Derived Data Cache\uff09\u76ee\u5f55\u8bbe\u7f6e\u5230\u673a\u68b0\u786c\u76d8\u4e0a\uff0c\u8981\u653e\u5728SSD\u4e0a\uff0c\u5426\u5219\u4f7f\u7528\u7f16\u8f91\u5668\u65f6\u4f1a\u5f88\u5361\uff08\u5982\uff1a\u79fb\u52a8\u573a\u666f\u4e2d\u7684\u7269\u4f53\uff09&nbsp; &nbsp;\u6ce8\uff1a\u5176\u7f3a\u7701\u4f1a\u5728&lt;User Folder&gt;\/AppData\/Local\/UnrealEngine\u4e2d\n\n<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1081\" height=\"411\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-7.png\" alt=\"\" class=\"wp-image-4268\"\/><\/figure>\n\n\n\n<p>\uff082\uff09\u53bb\u6389UE4\u548c\u6e38\u620f\u5de5\u7a0b\u7684\u6240\u6709Depends\uff08\u5de5\u7a0b\u53f3\u952e\u83dc\u5355 &#8212; Build Dependencies &#8212; Project Dependencies &#8230;\uff09\uff0c\u624b\u52a8\u7f16\u8bd1\u5404\u4e2a\u5de5\u7a0b\uff0c\u9632\u6b62\u4fee\u6539\u4e00\u4e2a\u5de5\u7a0b\u540e\uff0c\u5f15\u53d1\u4f9d\u8d56\u8be5\u5de5\u7a0b\u53d1\u751f\u91cd\u7f16\u8bd1<\/p>\n\n\n\n<p>\uff083\uff09\u53bb\u6389UE4\u548c\u6e38\u620f\u5de5\u7a0bNMake\u547d\u4ee4\u884c\u4e0a\u7684\u5bf9ShaderCompileWorker\u7684\u4f9d\u8d56<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1402\" height=\"548\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-8.png\" alt=\"\" class=\"wp-image-4269\"\/><\/figure>\n\n\n\n<p>\u53ef\u5728\u5f15\u64ce\u5de5\u7a0b\uff1aEngine\/Saved\/UnrealBuildTool\/BuildConfiguration.xml\u4e2d\u5173\u95edGenerate Visual Studio Project files\u65f6\u5bf9ShaderCompileWorker\u7684\u4f9d\u8d56<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;?xml version=\"1.0\" encoding=\"utf-8\" ?&gt;\n &lt;Configuration xmlns=\"https:\/\/www.unrealengine.com\/BuildConfiguration\"&gt;\n     &lt;BuildConfiguration&gt;\n         &lt;bEditorDependsOnShaderCompileWorker&gt;false&lt;\/bEditorDependsOnShaderCompileWorker&gt;\n     &lt;\/BuildConfiguration&gt;\n &lt;\/Configuration&gt;<\/pre>\n\n\n\n<p>\uff084\uff09\u5173\u95ed\u6bcf\u6b21\u6784\u5efa\u9879\u76ee\u90fd\u81ea\u52a8\u6784\u5efaUnrealHeaderTool&nbsp;<\/p>\n\n\n\n<p>\u5728Engine\/Saved\/UnrealBuildTool\/BuildConfiguration.xml\u4e2d\u589e\u52a0\u5982\u4e0b\u914d\u7f6e\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;?xml version=\"1.0\" encoding=\"utf-8\" ?&gt;\n&lt;Configuration xmlns=\"https:\/\/www.unrealengine.com\/BuildConfiguration\"&gt;\n     &lt;UEBuildConfiguration&gt;\n         &lt;bDoNotBuildUHT&gt;true&lt;\/bDoNotBuildUHT&gt;\n     &lt;\/UEBuildConfiguration&gt;\n&lt;\/Configuration&gt;<\/pre>\n\n\n\n<p> \u6ce8\uff1a\u4eceUnrealHeaderTool.Build.cs\u4e2d\u53ef\u77e5\uff1aUHT\u4f9d\u8d566\u4e2a\u57fa\u7840\u7684\u5f15\u64ce\u6a21\u5757\uff1aCore\u3001CoreUObject\u3001Json\u3001Projects\u3001TraceLog\uff08Core\u3001CoreUObject\u4f9d\u8d56TraceLog\uff0c\u6240\u4ee5UHT\u4e5f\u95f4\u63a5\u4f9d\u8d56\u5b83\uff09\u548cBuildSettings\uff08Core\u4f9d\u8d56BuildSettings\uff0c\u6240\u4ee5UHT\u4e5f\u95f4\u63a5\u4f9d\u8d56\u5b83\uff09 <\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"782\" height=\"359\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-9.png\" alt=\"\" class=\"wp-image-4270\"\/><\/figure>\n\n\n\n<p>\uff085\uff09Tools &#8211; Options &#8211; Projects and Solutions\uff0c\u53d6\u6d88\u52fe\u9009Always show Error List if build finishes with errors\uff0c\u9632\u6b62\u6bcf\u6b21\u7f16\u8bd1\u6709\u9519\uff0cvs\u90fd\u81ea\u52a8\u6fc0\u6d3b\u663e\u793aError List\u9762\u677f<\/p>\n\n\n\n<p>\uff086\uff09\u5173\u95edVisual Studio\u81ea\u5e26git\u63d2\u4ef6\uff0c\u907f\u514d\u6bcf\u6b21\u7f16\u8bd1\u90fd\u8981\u8fdb\u884cgit status\u7684\u68c0\u67e5\uff0c\u63d0\u5347\u5f00\u53d1\u6548\u7387<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">1&gt;------ Build started: Project: MyTest1, Configuration: Debug_Editor x64 ------\n1&gt;Using 'git status' to determine working set for adaptive non-unity build (G:\\svn\\UnrealEngine).\n1&gt;Using 'git status' to determine working set for adaptive non-unity build (G:\\svn\\MyTest1).\n1&gt;Waiting for 'git status' command to complete<\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"746\" height=\"489\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-10.png\" alt=\"\" class=\"wp-image-4271\"\/><\/figure>\n\n\n\n<p>\uff087\uff09\u5c06Solution Configurations\u7684\u5bbd\u5ea6\u8c03\u6210\u4e3a150\uff0c\u8ba9\u5176\u80fd\u663e\u793a\u5b8c\u5168<\/p>\n\n\n\n<p>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u83dc\u5355\u9879\uff1aTools &#8211; Options &#8211; Customize<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"845\" height=\"555\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-11.png\" alt=\"\" class=\"wp-image-4272\"\/><\/figure>\n\n\n\n<p>\uff088\uff09\u7f16\u8bd1\u65f6\u4e0d\u8981\u7528\u6ee1\u6240\u6709cpu\u7684\u6838\uff0c\u5426\u5219\u8ba1\u7b97\u673a\u4f1a\u975e\u5e38\u5361\uff0c\u57fa\u672c\u65e0\u6cd5\u8fdb\u884c\u5176\u4ed6\u5de5\u4f5c<\/p>\n\n\n\n<p>\u00a0 \u00a0\u5728BuildConfiguration.xml\u4e2d\u8fdb\u884c\u914d\u7f6e\uff0c\u5c06MaxProcessorCount\u8bbe\u7f6e\u62107\uff08\u6211\u672c\u673a\u662f8\u6838cpu\uff09<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">&lt;?xml version=\"1.0\" encoding=\"utf-8\" ?&gt;\n &lt;Configuration xmlns=\"https:\/\/www.unrealengine.com\/BuildConfiguration\"&gt;\n     &lt;ParallelExecutor&gt;\n         &lt;MaxProcessorCount&gt;7&lt;\/MaxProcessorCount&gt;\n     &lt;\/ParallelExecutor&gt;\n     &lt;BuildConfiguration&gt;\n         &lt;bAllowXGE&gt;true&lt;\/bAllowXGE&gt;\n     &lt;\/BuildConfiguration&gt;\n &lt;\/Configuration&gt;<\/pre>\n\n\n\n<p>\u6ce8\uff1abAllowXGE\u8868\u793a\u662f\u5426\u5f00\u542fIncredBuild\uff08XGE\uff09<\/p>\n\n\n\n<p>BuildConfiguration.xml\u4f1a\u6309\u7167\u4e0b\u9762\u8def\u5f84\u7684\u987a\u5e8f\u6765\u8fdb\u884c\u67e5\u627e\u6765\u52a0\u8f7d&nbsp; &nbsp;\u66f4\u591a\u4fe1\u606f\u8be6\u89c1\uff1a<a href=\"https:\/\/docs.unrealengine.com\/en-us\/Programming\/BuildTools\/UnrealBuildTool\/BuildConfiguration\" target=\"_blank\" rel=\"noreferrer noopener\">Build Configuration<\/a><\/p>\n\n\n\n<p>&nbsp; \u2460 \u5f15\u64ce\u5de5\u7a0b\uff1aEngine\/Saved\/UnrealBuildTool\/BuildConfiguration.xml<br>&nbsp; \u2461 &lt;User Folder&gt;\/AppData\/Roaming\/Unreal Engine\/UnrealBuildTool\/BuildConfiguration.xml<br>&nbsp; \u2462 &lt;My Documents&gt;\/Unreal Engine\/UnrealBuildTool\/BuildConfiguration.xml<\/p>\n\n\n\n<p>\u8fd8\u6709\u4e00\u79cd\u5feb\u901f\u7981\u6389IncredBuild\u65b9\u6cd5\u662f\u5c06c:\\Programe Files(x86)\\IncredBuild\\xgConsole.exe\u6539\u540d<\/p>\n\n\n\n<p>\uff089\uff09\u5982\u679c\u53ea\u662f\u60f3\u7981\u7528shader\u7f16\u8bd1\u7684IncredBuild\u7684\u52a0\u901f\uff0c\u53ef\u5728Engine\\Config\\ConsoleVariables.ini\u4e2d\u6253\u5f00r.XGEShaderCompile = 0<\/p>\n\n\n\n<p>\uff0810\uff09\u4ecevs\u76f4\u63a5\u8fd0\u884c\u6216\u8c03\u8bd5\u8fd0\u884cUE\u65f6\uff0c\u4e0d\u8981\u8fdb\u884c\u4efb\u4f55\u7f16\u8bd1\u884c\u4e3a<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"493\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-12.png\" alt=\"\" class=\"wp-image-4273\"\/><\/figure>\n\n\n\n<p> 11\uff09<a rel=\"noreferrer noopener\" href=\"https:\/\/docs.unrealengine.com\/en-US\/Programming\/Development\/VisualStudioSetup\/UnrealVS\/index.html?lang=en-US\" target=\"_blank\">UnrealVS\u6269\u5c55<\/a>\uff08<a rel=\"noreferrer noopener\" href=\"https:\/\/docs.unrealengine.com\/zh-CN\/Programming\/Development\/VisualStudioSetup\/UnrealVS\/index.html\" target=\"_blank\">\u4e2d\u6587<\/a>\uff09 <\/p>\n\n\n\n<p> \u53f3\u952eVisual Studio\u5de5\u5177\u680f\u533a\u57df\uff0c\u5f39\u51fa\u5feb\u6377\u83dc\u5355\uff0c\u52fe\u9009\u663e\u793aUnrealVS\u5de5\u5177\u680f <\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"27\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-13.png\" alt=\"\" class=\"wp-image-4274\"\/><\/figure>\n\n\n\n<p>\u5b89\u88c5\u6587\u4ef6\u5728\uff1aEngine\\Extras\\UnrealVS<\/p>\n\n\n\n<p>\u4ee3\u7801\u5728\uff1aEngine\\Source\\Programs\\UnrealVS<\/p>\n\n\n\n<p>\u63d0\u4f9b\u4e86\u5982\u4e0b\u529f\u80fd\uff1a<\/p>\n\n\n\n<p>a. \u8bbe\u7f6e\u542f\u52a8\u9879\u76ee<br>b. \u7ed1\u5b9a\u6784\u5efa\u542f\u52a8\u9879\u76ee\u7684\u547d\u4ee4<br>c. \u8bbe\u7f6e\u547d\u4ee4\u884c\u53c2\u6570<br>d. \u6279\u91cf\u6784\u5efa\u9879\u76ee<br>f. \u5feb\u901f\u6784\u5efa\u9879\u76ee\u83dc\u5355<\/p>\n\n\n\n<p>\uff0812\uff09\u51fa\u73b0\u65ad\u70b9\u6253\u4e0d\u4e0a\uff08\u7a7a\u5fc3\u5e26\u9ec4\u8272\u611f\u53f9\u53f7\uff09\u7684\u60c5\u51b5\uff08\u5982\uff1a\u8c03\u8bd5Release\u7248\u672c\u3001\u53ef\u6267\u884c\u7a0b\u5e8f\u76ee\u5f55\u53d1\u751f\u8fc7\u53d8\u5316\u7b49\uff09\uff0c\u9700\u8981\u505a\u4e00\u4e0b\u68c0\u67e5\u548c\u8bbe\u7f6e<\/p>\n\n\n\n<p>\u2460 vs\u5904\u4e8e\u8c03\u8bd5\u6001\u65f6\uff0c\u5728\u83dc\u5355Debug &#8212; Windows &#8212; Modules\u9762\u677f\u91cc\uff0c\u641c\u7d22\u76ee\u6807\u6a21\u5757\u7684pdb\u662f\u5426\u52a0\u8f7d<\/p>\n\n\n\n<p>\u2461\u00a0vs\u8bbe\u7f6e\uff1aTools &#8211; Options &#8211; Debugging \u00a0&#8211; \u00a0\u53d6\u6d88\u52fe\u9009\u201cRequire source files to exactly match the original version\u201d<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"497\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-14.png\" alt=\"\" class=\"wp-image-4275\"\/><\/figure>\n\n\n\n<p>\uff0813\uff09\u6539\u5584C++\u8c03\u8bd5\uff1a\u5728vs\u8fdb\u884cC++\u8c03\u8bd5\u65f6\u66f4\u597d\u5730\u67e5\u770bUnreal\u81ea\u5b9a\u4e49\u7c7b\u578b\u53d8\u91cf\uff08\u5982\uff1aFName\uff0cFString\uff0cTArray\u7b49\uff09<\/p>\n\n\n\n<p>\u8fd0\u884cEngine\\Extras\\VisualStudioDebugging\\InstallVisualizers.bat\uff08\u652f\u6301vs2012\u3001vs2013\u3001vs2015\uff09\u8fdb\u884c\u5b89\u88c5<\/p>\n\n\n\n<p>\u5bf9\u4e8evs2017\u7b49\u66f4\u9ad8\u7248\u672c\uff0c\u53ef\u4ee5\u624b\u52a8\u5c06Engine\\Extras\\VisualStudioDebugging\\UE4.natvis\u62f7\u8d1d\u5230%USERPROFILE%\\Documents\\Visual Studio 2017\\Visualizers\u76ee\u5f55\u4e2d\u8fdb\u884c\u624b\u52a8\u5b89\u88c5<\/p>\n\n\n\n<p>\u5b89\u88c5\u5b8c\u6210\u540e\uff0c\u91cd\u542fvs<\/p>\n\n\n\n<p>vs\u8bbe\u7f6e\uff1aTools &#8211; Options &#8211; Debugging &nbsp;&#8211; &nbsp;\u53d6\u6d88\u52fe\u9009\u201cShow raw structure of objects in variables windows\u201d<\/p>\n\n\n\n<p>\uff0814\uff09\u5f00\u542fvs\u7684Intellisense\uff08\u667a\u80fd\u611f\u77e5\uff09\u529f\u80fd<\/p>\n\n\n\n<p>\u5728\u7f16\u5199\u4ee3\u7801\u5b9e\u65f6\u952e\u5165\u65f6\uff0cIntelliSense\u5c06\u91cd\u65b0\u7f16\u8bd1C++\uff0c\u8fdb\u884c\u5b9e\u65f6\u9519\u8bef\u548c\u7b5b\u9009\u3002\u6b64\u529f\u80fd\u6bd4VAX\u7684\u8bed\u6cd5\u68c0\u67e5\u66f4\u52a0\u5f3a\u5927\uff0c\u5176\u4f7f\u7528\u7684\u662f\u5b8c\u6574C++\u7f16\u8bd1\u5668\uff0c\u53ef\u9010\u884c\u9a8c\u8bc1\u4ee3\u7801\uff0c\u53ef\u6781\u5927\u52a0\u5feb\u5de5\u4f5c\u6d41<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"847\" height=\"510\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-15.png\" alt=\"\" class=\"wp-image-4276\"\/><\/figure>\n\n\n\n<p>\u6ce81\uff1a\u5de6\u4e0b\u89d2\u7684\u56fe\u6807\u8868\u793a\u56fe\u6807IntelliSense\u7f16\u8bd1\u7a0b\u5e8f\u6b63\u5728\u8fd0\u884c<\/p>\n\n\n\n<p>\u6ce82\uff1avs\u9ed8\u8ba4\u662f\u5f00\u542fIntellisense\u7684\uff0c\u5982\u679c\u6ca1\u6709\u542f\u7528\uff0c\u8bf7\u68c0\u67e5\u4ee5\u4e0b\u8bbe\u7f6e\u9879<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"497\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-16.png\" alt=\"\" class=\"wp-image-4277\"\/><\/figure>\n\n\n\n<p>\uff0815\uff09\u914d\u7f6e\u5e76\u4f7f\u7528ue4\u7684Snippet\u81ea\u52a8\u5b8c\u6210\uff0c\u6765\u63d2\u5165\u6a21\u677f\u4ee3\u7801<\/p>\n\n\n\n<p>\u914d\u7f6e\u65b9\u6cd5\uff1a\u62f7\u8d1dEngine\\Extras\\VisualStudioSnippets\u4e2d\u6240\u6709\u7684snippet\u6587\u4ef6\u5230C:\\Users\\&lt;user&gt;\\Documents\\Visual Studio 2017\\Code Snippets\\Visual C++\\My Code Snippets\u76ee\u5f55\u4e2d\uff0c\u5e76\u91cd\u542fvs<\/p>\n\n\n\n<p>\u7136\u540e\u5728UE4\u7684\u9879\u76ee\u4e2d\u8f93\u5165\uff1aue4\u00a0\u00a0\u5c31\u4f1a\u51fa\u73b0snippet\u5217\u8868\uff0c\u9009\u62e9\u67d0\u9879snippet\u540e\u5c31\u4f1a\u63d2\u5165\u5bf9\u5e94\u6a21\u677f\u4ee3\u7801<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"917\" height=\"417\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-17.png\" alt=\"\" class=\"wp-image-4278\"\/><\/figure>\n\n\n\n<p> \u6269\u5c55\uff1a<a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/mpolaczyk\/ue4snippets\" target=\"_blank\">ue4snippets github<\/a><a rel=\"noreferrer noopener\" href=\"https:\/\/wiki.unrealengine.com\/Visual_Studio_Snippets\" target=\"_blank\">Snippet\u5404\u4e2a\u6587\u4ef6\u8bf4\u660e<\/a><\/p>\n\n\n\n<p> \uff0816\uff09\u7981\u7528\u201c\u7f16\u8bd1\u51fa\u9519\u65f6\u59cb\u7ec8\u663e\u793a\u9519\u8bef\u5217\u8868\u201d\uff08Always show Error List if build finishes with error\uff09\u00a0\u00a0\u6ce8\uff1a\u9632\u6b62\u7f16\u8bd1\u5931\u8d25\u540e\u81ea\u52a8\u5f39\u51fa\u9519\u8bef\u5217\u8868 <\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"744\" height=\"487\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-18.png\" alt=\"\" class=\"wp-image-4279\"\/><\/figure>\n\n\n\n<p> \uff0817\uff09Disable\u663e\u793a\u975e\u6d3b\u52a8\u4ee3\u7801\u5757\u00a0 \u00a0\u6ce8\uff1a\u5173\u95ed\u8be5\u9009\u9879\u540e\uff0c\u4ee3\u7801\u4f1a\u6b63\u5e38\u663e\u793a\uff08#if \u4e3afalse\u7684\u4ee3\u7801\u5757\u4f1a\u53d8\u7070\uff09 <\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"744\" height=\"487\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-19.png\" alt=\"\" class=\"wp-image-4280\"\/><\/figure>\n\n\n\n<p> \u66f4\u591a\u8bf7\u53c2\u8003\uff1a<a rel=\"noreferrer noopener\" href=\"https:\/\/docs.unrealengine.com\/en-US\/Programming\/Development\/VisualStudioSetup\/index.html\" target=\"_blank\">\u8bbe\u7f6e\u865a\u5e7b\u5f15\u64ce\u7684Visual Studio<\/a>\uff08<a rel=\"noreferrer noopener\" href=\"https:\/\/docs.unrealengine.com\/zh-CN\/Programming\/Development\/VisualStudioSetup\/index.html\" target=\"_blank\">\u4e2d\u6587<\/a>\uff09 <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u8fd0\u884c\u5f15\u64ce\u548c\u9879\u76ee<\/strong><\/h2>\n\n\n\n<p>\u542f\u52a8\u5f15\u64ce\u7f16\u8f91\u5668<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\/Engine\/Binaries\/Win64\/UE4Editor.exe\"&nbsp;-skipcompile<\/pre>\n\n\n\n<p>\u542f\u52a8\u9879\u76ee\u7f16\u8f91\u5668<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\/Engine\/Binaries\/Win64\/UE4Editor.exe\"  \"%GameDir%\\MyGame.uproject\" -skipcompile<\/pre>\n\n\n\n<p>\u5355\u673a\u542f\u52a8\u6e38\u620f\u5355\u673a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\/Engine\/Binaries\/Win64\/UE4Editor.exe\"  \"%GameDir%\\MyGame.uproject\" TestMap_Main -game -skipcompile<br><br>\"%EngineDir%\\Engine\\Binaries\\Win64\\UE4Editor.exe\"&nbsp; \"%GameDir%\/MyGame.uproject\" \/Game\/TestMap -game -PIEVIACONSOLE&nbsp; -Multiprocess&nbsp; GameUserSettingsINI=\"%GameDir%\/Saved\/Config\/Windows\/PIEGameUserSettings0.ini\" -MultiprocessSaveConfig -MultiprocessOSS -messaging -SessionName=\"Play in Standalone Game\" -windowed -WinX=309 -WinY=152 SAVEWINPOS=1 -ResX=1280 -ResY=720<\/pre>\n\n\n\n<p>\u542f\u52a8\u672c\u5730ds<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\/Engine\/Binaries\/Win64\/UE4Editor.exe\"  \"%GameDir%\\MyGame.uproject\" TestMap_Main -game -server -log -skipcompile<\/pre>\n\n\n\n<p>\u542f\u52a8\u6e38\u620f\u5e76\u8054\u7f51\u52a0\u5165\u672c\u5730ds<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\/Engine\/Binaries\/Win64\/UE4Editor.exe\"  \"%GameDir%\\MyGame.uproject\" 127.0.0.1 -game -skipcompile<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u7248\u672c\u6253\u5305<\/strong><\/h2>\n\n\n\n<p>\u2460 win64 &#8212; Development\u7248\u672c\u5305&nbsp; \u4f1a\u8f93\u51fa\u5230%Win64Dir%\\WindowsNoEditor\u76ee\u5f55\u4e2d<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">%EngineDir%\\Engine\\Build\\BatchFiles\\RunUAT.bat -ScriptsForProject=%GameDir%\\MyGame.uproject BuildCookRun -project=%GameDir%\\MyGame.uproject -targetplatform=Win64 -clientconfig=Development -ue4exe=UE4Editor-Cmd.exe -noP4 -iterate -cook -pak -package -stage -archive -archivedirectory=%Win64Dir% -nocompileeditor -prereqs -nodebuginfo -build -CrashReporter -utf8output -compressed<\/pre>\n\n\n\n<p>\u2461 Android &#8212; Debug\u7248\u672c\u5305&nbsp; \u4f1a\u8f93\u51fa\u5230%ApkDir%\\Android_ETC2\u76ee\u5f55\u4e2d&nbsp; &nbsp;&nbsp;<a href=\"https:\/\/docs.unrealengine.com\/zh-CN\/Platforms\/Mobile\/Android\/InstallingAndroidCodeWorksAndroid\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\">windows\u4e0b\u5b89\u88c5Android\u6784\u5efa\u73af\u5883<\/a>&nbsp;\uff08<a href=\"https:\/\/docs.unrealengine.com\/en-US\/Platforms\/Mobile\/Android\/InstallingAndroidCodeWorksAndroid\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\">en<\/a>\uff09<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">%EngineDir%\\Engine\\Build\\BatchFiles\\RunUAT.bat -ScriptsForProject=%GameDir%\\MyGame.uproject BuildCookRun -nocompileeditor -nop4 -iterate -project=%GameDir%\\MyGame.uproject -cook -stage -archive -archivedirectory=%ApkDir% -package -clientconfig=Debug -ue4exe=UE4Editor-Cmd.exe -compressed -pak -prereqs -nodebuginfo -targetplatform=Android -cookflavor=ETC2 -build -distribution -utf8output -compile<\/pre>\n\n\n\n<p>cook Android ASTC\u5305\u547d\u4ee4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">%EngineDir%\\Engine\\Binaries\\Win64\\UE4Editor-Cmd.exe %GameDir%\\MyGame.uproject -run=Cook  -TargetPlatform=Android_ASTC -fileopenlog -unversioned -abslog=%EngineDir%\\Engine\\Programs\\AutomationTool\\Saved\\Cook-2020.12.08-09.48.23.txt -stdout -CrashForUAT -unattended -NoLogTimes  -UTF8Output<\/pre>\n\n\n\n<p>\u73af\u5883\u53d8\u91cf &#8212; XXX\u7684\u7528\u6237\u53d8\u91cf\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ANDROID_HOME    E:\\NVPACK\\android-sdk-windows\nANDROID_NDK_ROOT    E:\\NVPACK\\android-ndk-r14b\nANT_HOME     E:\\NVPACK\\apache-ant-1.8.2\nGRADLE_HOME    E:\\NVPACK\\gradle-2.9\nJAVA_HOME    E:\\NVPACK\\jdk1.8.0_77\nNDK_ROOT    E:\\NVPACK\\android-ndk-r14b\nNDKROOT    E:\\NVPACK\\android-ndk-r14b\nNVPACK_NDK_TOOL_VERSION    4.9\nNVPACK_NDK_VERSION    android-ndk-r14b\nNVPACK_ROOT    E:\\\\NVPACK\nPath    E:\\NVPACK\\gradle-2.9\\bin;E:\\NVPACK\\apache-ant-1.8.2\\bin;E:\\NVPACK\\jdk1.8.0_77\\bin;E:\\NVPACK\\android-ndk-r14b;E:\\NVPACK\\android-sdk-windows\\extras\\android\\support;E:\\NVPACK\\android-sdk-windows\\build-tools;E:\\NVPACK\\android-sdk-windows\\platform-tools;E:\\NVPACK\\android-sdk-windows\\tools;<\/pre>\n\n\n\n<p>\u6ce8\uff1a\u82e5\u60f3\u5347\u7ea7ndk\uff0c\u53ef\u4ece<a href=\"https:\/\/developer.android.com\/ndk\/downloads\" target=\"_blank\" rel=\"noreferrer noopener\">\u8fd9\u513f<\/a>\u4e0b\u8f7d\uff0c\u89e3\u538b\u540e\u653e\u5230E:\\NVPACK\u76ee\u5f55\u4e2d\uff0c\u5e76\u66f4\u65b0NDK_ROOT\u3001NDKROOT\u53caPath\u73af\u5883\u53d8\u91cf\u4e2d\u7684\u8def\u5f84\u5373\u53ef<\/p>\n\n\n\n<p>\u5728\u9879\u76ee\u8bbe\u7f6e &#8212; Platforms &#8212; Android\u9875\u9762\u4e2d\uff0c\u70b9\u51fbAccept SDK License\u540c\u610f\u4e00\u4e0b\u00a0 \u00a0\u6ce8\uff1a\u4f1a\u5728E:\\NVPACK\\android-sdk-windows\\licenses\u4e0b\u751f\u6210\u4e00\u4e2aandroid-sdk-license\u6587\u4ef6<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"647\" height=\"450\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-20.png\" alt=\"\" class=\"wp-image-4282\"\/><\/figure>\n\n\n\n<p>C:\\Users\\&lt;\u7528\u6237\u540d&gt;\\.gradle\u76ee\u5f55\u3001C:\\Users\\&lt;\u7528\u6237\u540d&gt;\\.android\u76ee\u5f55<\/p>\n\n\n\n<p>\u914d\u7f6egradle\u7684\u4ee3\u7406\uff08\u6240\u5728\u6587\u4ef6\uff1aC:\\Users\\&lt;\u7528\u6237\u540d&gt;\\.gradle\\gradle.properties\uff09<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">systemProp.https.proxyPort=8080\nsystemProp.http.proxyHost=web-proxy.oa.com\nsystemProp.https.proxyHost=web-proxy.oa.com\nsystemProp.http.proxyPort=8080<\/pre>\n\n\n\n<p>\u2462 iOS &#8212; Debug\u7248\u672c\u5305&nbsp; \u4f1a\u8f93\u51fa\u5230${IpaDir}\/IOS\u76ee\u5f55\u4e2d&nbsp; &nbsp;&nbsp;\u6ce8\uff1a\u8bbe\u7f6eDefaultGame.ini\u4e2d[\/Script\/UnrealEd.ProjectPackagingSettings]\u6807\u7b7e\u4e0b\u7684BuildConfiguration=PPBC_Debug<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">${%EngineDir%}\/Engine\/Build\/BatchFiles\/RunUAT.sh -ScriptsForProject=${GameDir}\/MyGame.uproject BuildCookRun -nocompileeditor -nop4 -project=${GameDir}\/MyGame.uproject -cook -stage -archive -archivedirectory=${IpaDir} -package -clientconfig=Debug -ue4exe=UE4Editor -compressed -pak -prereqs -nodebuginfo -targetplatform=IOS -build -manifests -CrashReporter -utf8output -compile<\/pre>\n\n\n\n<p>\u6ce81\uff1a\u5728windows\u914d\u7f6e\u597diOS\u8fdc\u7a0b\u6784\u5efa\u73af\u5883\uff0c\u4e5f\u53ef\u4ee5\u5728windows\u4e0a\u6784\u5efaiOS\u7248\u672c&nbsp; \u8be6\u89c1\uff1a<a href=\"https:\/\/docs.unrealengine.com\/zh-CN\/Platforms\/Mobile\/iOS\/Windows\/index.html\" target=\"_blank\" rel=\"noreferrer noopener\">\u5728 Windows \u4e0a\u6784\u5efa iOS \u7248\u672c<\/a><\/p>\n\n\n\n<p>\u6ce82\uff1aMac\u4e0acook\u5931\u8d25\uff0c\u63d0\u793a\uff1aCookResults: Error: Package Native Shader Library failed for MacNoEditor.&nbsp; &nbsp;\u53ef\u901a\u8fc7\u5173\u6389Project Settings &#8211; Packing &#8211; Shared Material Native Library\u6765\u89e3\u51b3<\/p>\n\n\n\n<p>\u2463 Linux ds &#8212; Debug\u7248\u672c\u5305&nbsp;&nbsp;\u4f1a\u8f93\u51fa\u5230${LinuxDir}\u76ee\u5f55\u4e2d<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">${%EngineDir%}\/Engine\/Build\/BatchFiles\/RunUAT.sh BuildCookRun -project=${GameDir}\/MyGame.uproject -build -cook -pak -stage -archive -archivedirectory=${LinuxDir} -package -serverconfig=Debug -server -noclient -targetplatform=Linux -ue4exe=UE4Editor -prereqs -nop4 -utf8output<\/pre>\n\n\n\n<p>\u6ce81\uff1acook\u7684\u4e34\u65f6\u6587\u4ef6\u5b58\u653e\u5728\uff1a%GameDir%\\Saved\\Cooked<\/p>\n\n\n\n<p>\u6ce82\uff1a\u6700\u540e\u7684\u7248\u672c\u5b58\u653e\u5728\uff1a%GameDir%\\Archive<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u5176\u4ed6<\/strong><\/h2>\n\n\n\n<p>\u6e05\u7406Development\u7248\u672c\u7684UE4\u5f15\u64ce<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\\Engine\\Build\\BatchFiles\\Clean.bat\" UE4Editor Win64 Development -waitmutex<\/pre>\n\n\n\n<p>\u6e05\u7406Development\u7248\u672c\u7684MyGame\u9879\u76ee<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\\Engine\\Build\\BatchFiles\\Clean.bat\" MyGameEditor Win64 Development \"%GameDir%\\MyGame.uproject\" -waitmutex<\/pre>\n\n\n\n<p>\u4e3aMyGame\u9879\u76ee\u7684TestMap_Main\u5730\u56fe\u6784\u5efa\u5149\u7167<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\\Engine\\Build\\BatchFiles\\RunUAT.bat\" RebuildLightmaps -project=%GameDir%\\MyGame.uproject -MapsToRebuildLightMaps=TestMap_Main<\/pre>\n\n\n\n<p>\u5728windows\u4e0a\u91cd\u65b0\u6253\u5305\u548c\u91cd\u7b7e\u540d\uff0c\u751f\u6210ipa\u6587\u4ef6&nbsp; \u6ce8\uff1aipa\u6587\u4ef6\u751f\u6210\u5728%GameDir%\\Binaries\\IOS\\MyGame.ipa<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\"%EngineDir%\\Engine\\Binaries\\DotNET\\IOS\\IPhonePackager.exe\" RepackageFromStage \"%GameDir%\\MyGame.uproject\" -config Development -schemename MyGame -schemeconfig \"Development\" -sign -codebased -stagedir \"%GameDir%\\Saved\\StagedBuilds\\IOS\" -project \"%GameDir%\\MyGame.uproject\" -provision \"DGame.mobileprovision\" -certificate \"iPhone Developer: cert RDM (CFG5EWN5ME)\"<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u95ee\u9898\uff1a<strong>\u627e\u4e0d\u5230XINPUT1_3.dll<\/strong><\/h2>\n\n\n\n<p> \u5b89\u88c5\u5f15\u64ce\u76ee\u5f55\u4e0bEngine\\Extras\\Redist\\en-us\\UE4PrereqSetup_x64.exe <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u5173\u4e8e\u89e3\u51b3\u65b9\u6848\u7684Configuration<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"159\" height=\"393\" src=\"http:\/\/blog.coolcoding.cn\/wp-content\/uploads\/2021\/10\/image-21.png\" alt=\"\" class=\"wp-image-4284\"\/><\/figure>\n\n\n\n<p>1. Debug \u6e38\u620f\u6a21\u5757\u548c\u5f15\u64ce\u6a21\u5757\u5747\u5f00\u542f\u8c03\u8bd5\u6a21\u5f0f<\/p>\n\n\n\n<p>2. DebugGame&nbsp; \u6e38\u620f\u6a21\u5757\u5f00\u542f\u8c03\u8bd5\u6a21\u5f0f\uff0c\u5f15\u64ce\u6a21\u677f\u5f00\u542f\u4f18\u5316<\/p>\n\n\n\n<p>3. Development&nbsp; \u6e38\u620f\u6a21\u5757\u548c\u5f15\u64ce\u6a21\u5757\u5747\u5f00\u542f\u4f18\u5316<\/p>\n\n\n\n<p>4. Shipping \u53d1\u884c\u7248\u672c\uff08\u4f1a\u53bb\u6389\u6240\u6709\u7f16\u8f91\u5668\u529f\u80fd\u3001stat\u7edf\u8ba1\u3001\u6027\u80fd\u5206\u6790\u4ee5\u53caGM\u547d\u4ee4\u7b49\uff09\u6e38\u620f\u6a21\u5757\u548c\u5f15\u64ce\u6a21\u5757\u5747\u5f00\u542f\u4f18\u5316<\/p>\n\n\n\n<p>5. Test&nbsp; \u542b\u6709stat\u7edf\u8ba1\u3001\u6027\u80fd\u5206\u6790\u4ee5\u53caGM\u547d\u4ee4\u7684Shipping\u7248\u672c<\/p>\n\n\n\n<p>6. \u5e26Editor\u8868\u793a\u4e3a\u7f16\u8f91\u5668\u7248\u672c\uff08\u542b\u6709\u5f88\u591a\u7f16\u8f91\u5668\u76f8\u5173\u7684\u529f\u80fd\uff09&nbsp;\u4f7f\u7528MyGameEditor.Target.cs\u7684\u9879\u76ee\u914d\u7f6e<\/p>\n\n\n\n<p>7. \u90fd\u4e0d\u5e26\u8868\u793a\u4e3a\u5ba2\u6237\u7aef\u7248\u672c&nbsp; &nbsp; \u4f7f\u7528MyGame.Target.cs\u7684\u9879\u76ee\u914d\u7f6e<\/p>\n\n\n\n<p>8. \u5e26Server\u8868\u793a\u4e3a\u670d\u52a1\u5668\u7248\u672c\u00a0\u00a0\u4f7f\u7528MyGameServer.Target.cs\u7684\u9879\u76ee\u914d\u7f6e<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u5728windows\u4e0b\u7f16\u8bd1\u901a\u8fc7\uff0c\u800c\u5728\u5176\u4ed6Linux\u3001Android\u3001iOS\u7b49\u5e73\u53f0\u7f16\u8bd1\u4e0d\u8fc7\u7684\u4e00\u4e9b\u60c5\u51b5\uff1a<\/strong><\/h2>\n\n\n\n<p><strong>1. \u659c\u6760\u95ee\u9898<\/strong><\/p>\n\n\n\n<p>\u5982\uff1a#include &#8220;Misc\\FileHelper.h&#8221;&nbsp; &nbsp;&#8211;&gt;&nbsp;&nbsp;#include &#8220;Misc\/FileHelper.h&#8221;<\/p>\n\n\n\n<p><strong>2. \u5927\u5c0f\u5199\u95ee\u9898<\/strong><\/p>\n\n\n\n<p>\u5982\uff1a#include &#8220;HAL\/PlatformFileManager.h&#8221;&nbsp; &#8211;&gt;&nbsp;#include &#8220;HAL\/PlatformFilemanager.h&#8221;<\/p>\n\n\n\n<p><strong>3. \u975e\u82f1\u6587\u5b57\u7b26<\/strong><\/p>\n\n\n\n<p>\u5982\uff1aUE_LOG(LogTemp, Warning, TEXT(&#8220;test&nbsp;\uff08xx\uff09&#8221;);&nbsp; &#8211;&gt;&nbsp;UE_LOG(LogTemp, Warning, TEXT(&#8220;test&nbsp;(xx)&#8221;);<\/p>\n\n\n\n<p><strong>4. \u4f7f\u7528\u975eUE4\u7684\u7c7b\u578b<\/strong><\/p>\n\n\n\n<p>\u5982\uff1aINT&nbsp;AmmoCount;&nbsp; &nbsp;&#8211;&gt;&nbsp;&nbsp;int32&nbsp;AmmoCount;<\/p>\n\n\n\n<p><strong>5. \u4f7f\u7528L\u6765\u4fee\u9970\u5b57\u7b26\u4e32<\/strong><\/p>\n\n\n\n<p>\u5982\uff1aL&#8221;MyTools&#8221;&nbsp; &#8211;&gt;&nbsp;&nbsp;TEXT(&#8220;MyTools&#8221;)<\/p>\n\n\n\n<p><strong>6. \u7f3a\u5c11#include\u67d0\u4e9b\u5934\u6587\u4ef6<\/strong><\/p>\n\n\n\n<p>\u539f\u56e0\u662f\u4e0d\u540c\u7f16\u8bd1\u5668\u9012\u5f52\u5c55\u5f00\u5934\u6587\u4ef6\u89c4\u5219\u5b58\u5728\u5dee\u522b<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8f6c\u8f7d\uff1ahttps:\/\/www.cnblogs.com\/kekec\/p\/8684068.html \u5728\u4e2a\u4eba\u7684Unr [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=\/wp\/v2\/posts\/4259"}],"collection":[{"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4259"}],"version-history":[{"count":4,"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=\/wp\/v2\/posts\/4259\/revisions"}],"predecessor-version":[{"id":4285,"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=\/wp\/v2\/posts\/4259\/revisions\/4285"}],"wp:attachment":[{"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4259"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4259"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.coolcoding.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4259"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}