面向用戶
/Engine/Binaries/*
Engine/Plugins/**/Binaries/*
面向游戲開發(fā)者
注意:Engine/Binaries/Win64/UnrealEditor-Win64-DebugGame.exe必須上傳徽级,否則開發(fā)者無法使用DebugGame模式來編譯工程
需要發(fā)布必要的Lib文件,游戲開發(fā)者需要link
Engine/Intermediate/Build/Win64/**.lib
Engine/Plugins/**/Intermediate/Build/Win64/**.lib
發(fā)布必要的generated的頭文件
Engine/Intermediate/Build/Win64/UnrealEditor/Inc/**.generated.h
Engine/Plugins/**/Intermediate/Build/Win64/UnrealEditor/Inc/**.generated.h
以上文件也可以不發(fā)布聊浅,游戲開發(fā)者自己用腳本生成餐抢,速度很快现使,通常10秒以內(nèi)可以生成完畢,指令如下:
rem ## allow compile unreal engine
del ..\Engine\Build\InstalledBuild.txt
if exist ..\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.exe goto GenHeaders
rem ## start building UnrealBuildTool.exe if it not exist
set ProjectFile="..\Engine\Source\Programs\UnrealBuildTool\UnrealBuildTool.csproj"
if not exist %ProjectFile% goto NoProjectFile
echo Building UnrealBuildTool with dotnet...
dotnet build %ProjectFile% -c Development -v quiet
if errorlevel 1 goto Error_UBTCompileFailed
rem ## start generate headers of engine.
:GenHeaders
..\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.exe -Target="UnrealEditor Win64 Development" -Mode=UnrealHeaderTool -ForceHeaderGeneration -log="../../Projects/Saved/Logs/GenEngineHeaders.log"
:NoProjectFile
rem ## forbidden compile unreal engine
echo. 1> ..\Engine\Build\InstalledBuild.txt
Pause
EXIT /B 0
:Error_UBTCompileFailed
echo ERROR: Failed to build UnrealBuildTool.
echo. 1> ..\Engine\Build\InstalledBuild.txt
EXIT /B 999
避免游戲開發(fā)者編譯引擎旷痕,節(jié)約時(shí)間碳锈,提升效率
需要上傳: Engine\Build\InstalledBuild.txt
InstalledBuild.txt在Engine\Build\BatchFiles\Build.bat中引用。
當(dāng)然欺抗,也可以自己創(chuàng)建一個(gè):
echo. 1> ..\Engine\Build\InstalledBuild.txt
InstalledBuild.txt 這個(gè)flag文件是用來標(biāo)記Engine是不是預(yù)編譯好只專注開發(fā)Project的售碳,比如用公版引擎來開發(fā)就屬于這種情況。
InstalledBuild的主要作用就是跳過UBT的編譯绞呈,跳過引擎的編譯贸人。
藍(lán)圖節(jié)點(diǎn)跳轉(zhuǎn)Cpp代碼
推薦使用InstalledBuild.txt,不建議開啟UsePrecompiled报强!
雙擊藍(lán)圖節(jié)點(diǎn)跳轉(zhuǎn)到cpp灸姊,前提條件是必須確保你本地所有的Engine的dll文件,都有對應(yīng)的完整pdb文件秉溉。
由于有些項(xiàng)目會和定制Engine放在同一個(gè)目錄力惯,例如:Projects和Engine在同一個(gè)目錄下。
此時(shí)召嘶,當(dāng)藍(lán)圖中雙擊節(jié)點(diǎn)跳轉(zhuǎn)的時(shí)候會打開UE5.sln, 而不是YourProjectName.sln父晶。
這個(gè)跳轉(zhuǎn)邏輯詳見:FVisualStudioSourceCodeAccessor::GetSolutionPath
解決方法:修改Engine\Intermediate\ProjectFiles\PrimaryProjectName.txt的內(nèi)容,將UE5替換為: Projects/YourProjectName
例如以下腳本:
rem ## fix bug: from blueprint node goto cpp will open a new UE5.sln
echo|set /p="Projects/YourProjectName" 1> ..\Engine\Intermediate\ProjectFiles\PrimaryProjectName.txt
../Engine/Build/BatchFiles/Build.bat -projectfiles -project="YourProjectName.uproject" -game -rocket -progress -log="Saved/Logs/GeneralteProjLog.log"
關(guān)于LivingCode
如果不上傳這個(gè)InstalledBuild.txt文件弄跌,每次Living Code的時(shí)候都會編譯UnrealBuildTool甲喝,并報(bào)Access is Denied的錯(cuò)誤。
UBT是底層程序铛只,游戲開發(fā)者沒必要每次都重編UBT埠胖,所以InstalledBuild.txt是很有必要存在的。
關(guān)于編譯UnrealBuildTool.csproj報(bào)Access Is Denied的問題淳玩,解決辦法主要設(shè)置Write權(quán)限:
Engine\Source\Programs\UnrealBuildTool目錄下:所有二進(jìn)制文件和csproj文件都要設(shè)置為可寫直撤。
另外,UnrealBuildTool.csproj還依賴Engine/Source/Programs/Shared目錄下的一些工程蜕着,例如: EpicGames.Build, EpicGames.Core, EpicGames.IoHash, EpicGames.Serialization, EpicGames.UHT, EpicGames.MsBuild.
具體還有哪些文件要設(shè)置為可寫谋竖,用這個(gè)命令來判斷: dotnet build Engine\Source\Programs\UnrealBuildTool\UnrealBuildTool.csproj -c Development -v quiet
關(guān)于在編輯器中創(chuàng)建插件
創(chuàng)建插件的方法: Edit菜單 -> Plugins -> Add -> create plugin.
創(chuàng)建插件的原理: FPluginUtils::CreateAndLoadNewPlugin -> FDesktopPlatformBase::GenerateProjectFiles -> FUProjectDictionary::IsForeignProject
為了創(chuàng)建插件后能正確地生成工程文件,就需要?jiǎng)h除Engine\Build\SourceDistribution.txt承匣,腳本如下
@echo off
rem ## enable generate uproject files, see @FDesktopPlatformBase::GenerateProjectFiles
echo|set /p="" 1> ..\Engine\Build\SourceDistribution.txt
del ..\Engine\Build\SourceDistribution.txt
第2行是為了確保第3行不會報(bào)錯(cuò)蓖乘。