UE4资源移动与跨项目迁移
资源移动
1. 在编辑器的Content中,可通过拖拽资源文件或目录来进行移动(注:资源的移动不能在windows资源管理器中进行,否则会导致引用关系丢失)
2. 若被移动的资源被其他资源引用着,移动完后会存在一个同名的重定向文件(jump文件,大小约为2KB):用于记录文件移动后的位置
3. 通过Fixed Up操作来更新并保存其他资源中对移动的资源的引用路径(注:即不再通过重定向文件跳转,而是在其他资源中直接填写资源移动后的位置)
4. 可通过ResavePackages的Commandlet命令进行批量Fixed Up操作
注:资源的重命名、删除都需要在编辑器中进行
移动文件或目录
将Content\ThirdPersonCPP\Meshes目录移动到Content\ThirdPerson中
在UE4中,移动或重命名一个资源会在其原有位置处留下一个重定向文件(jump文件)
注1:需要打开Filters -- Other Filters -- Show Redirectors过滤器,才能看到这些重定向文件(jump文件)
注2:双击这些重定向文件(jump文件)会跳转到文件真正的位置
注3:如果当前已经打开了地图A,地图A会将对这些文件的引用调整到移动后的位置(即:不需要借助jump文件)。不过,要记得保存地图A。
使用Type=ObjectRedirector来查看某个目录下所有Redirectors过滤器
注:这些重定向文件(jump文件)很小,约为2KB,里面只记录一个跳转路径,实际的数据已经存放到移动后的目录中
注:使用右键菜单"Fix Up"和"Fix Up Redirectors in Folder"时,会修复所有指向重定向文件的包中的链接到移动后的位置。当成功完成修理后,会保存这些包,并删除重定向文件
使用ResavePackages命令来清理重定向文件
首先需要注意的是,该命令只能处理没有被引用的重定位文件。如果重定位文件还被其他文件引用着,则会被跳过
UE4Editor.exe "%GameDir%\MyGame.uproject" -run=ResavePackages -fixupredirects -projectonly // 只修复项目中的重定向文件
UE4Editor.exe "%GameDir%\MyGame.uproject" -run=ResavePackages -fixupredirects -packagefolder="G:/svn/MyTest1/Content/ThirdPersonCPP/Meshes" // 修复目录G:/svn/MyTest1/Content/ThirdPersonCPP/Meshes中的重定向文件
不过需要对ContentCommandlets.cpp的UResavePackagesCommandlet::InitializeResaveParameters函数中做如下修改,才能正常执行
UE4Editor.exe "%GameDir%\MyGame.uproject" -run=ResavePackages -fixupredirects -package=/Game/ThirdPersonCPP/Meshes/Linear_Stair_StaticMesh // 修复名为ThirdPersonCPP/Meshes/Linear_Stair_StaticMesh的重定向文件
UE4Editor.exe "%GameDir%\MyGame.uproject" -run=ResavePackages -fixupredirects -file="G:/svn/MyTest1/fixfilelist.txt" // 修复G:/svn/MyTest1/fixfilelist.txt列表中的重定向文件
fixfilelist.txt中内容如下
G:/svn/MyTest1/Content/ThirdPersonCPP/Meshes/Bump_StaticMesh.uasset
G:/svn/MyTest1/Content/ThirdPersonCPP/Meshes/LeftArm_StaticMesh.uasset
跨项目迁移
迁移资源目录到另外一个工程
注:可双击Asset Report面板上的资源来打开预览
迁移某些Level到另外一个工程
具体操作步骤:在Levels面板中,选择要迁移的Level,然后点击面板左上角Levels按钮,在弹出的菜单中选择“Migrate...”
注:可双击Asset Report面板上的资源来打开预览
参考