我正在尝试解决一个限制。为了完整起见,我将提供完整的背景信息。
在虚幻引擎中,每个虚幻项目(.uproject 文件)都与引擎/编辑器的特定版本或特定安装相关联。双击启动项目时,它会运行:
UnrealVersionSelector.exe /editor "C:\path\to\myproject.uproject"
随后会启动相关的引擎编辑器。UnrealVersionSelector 负责解析 .uproject 文件、查找正确的引擎并启动编辑器。
我的批处理文件中需要的是只是发动机的位置。我想在该文件夹中运行其他实用程序。不幸的是,没有选项可以仅打印引擎的位置。UnrealVersionSelector 的源代码是公开的,可以在此处找到:https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Source/Programs/UnrealVersionSelector/Private/UnrealVersionSelector.cpp
我目前的计划:让批处理文件以特殊方式启动 UnrealVersionSelector,阻止它实际启动编辑器 - 然后使用失败的编辑器启动路径来获取我想要的信息。
这可以通过批处理文件来实现吗?
显然,我非常希望找到更好的方法或者我所忽略的一些明显的东西。
答案1
引擎存储在项目文件中的“引擎关联”字段中。如果不是引擎编号,则可以是引擎构建的 GUID。
注册表中有一个“查找表”,HKEY_CURRENT_USER/Software/Epic Games/Unreal Engine/Builds
因此您可以将 GUID 与引擎构建对齐。
因此,如果您可以提取 GUID(例如:https://stackoverflow.com/questions/24943001/extracting-text-from-xml-file-via-batch-file),然后执行reg query
,您可能已经得到了所需的东西。