使用十六进制编辑资源
通常可以用 UAssetGUI 修改资源,但工具无法处理某些文件时,也可以尝试手动进行十六进制编辑。本指南以修改材质发光颜色为例,介绍两种查找和替换浮点数的方法。
获取原始值
使用 FModel 或 UModel 找到并导出目标资源。
原文示例中,发光颜色的值为 0.0, 33.0, 55.0, 1.0,可以在 FModel 中查看。
导出的资源通常由 .uasset 与 .uexp 配对组成;本例中的值存储在 .uexp 中,需要编辑该文件。
方法一:按浮点数替换
用十六进制编辑器打开 .uexp。原例使用 Hex Editor Neo,通过 Ctrl+H 打开替换窗口;其他软件的快捷键可能不同。将类型设为 Float,输入原值与目标值。如果编辑器没有此功能,可使用下方的第二种方法。
点击 Replace All。操作成功时会显示提示窗口。
替换后,使用 UnrealPak 将修改过的 .uexp 打包。
可在游戏内验证修改后的效果。
方法二:搜索十六进制字节
如果编辑器没有按浮点数替换的功能,可以先把原始数值转换成小端序十六进制字节。本例使用 0.0, 33.0, 55.0, 1.0。
将转换后的字节序列输入搜索面板。
本例中的组合是唯一的,因此只有一条结果。
再用目标值对应的字节替换。原例目标值为 55, 0, 0, 1,对应:
00 00 5c 42 00 00 00 00 00 00 00 00 00 00 80 3F
在本例中,55 表示发光强度;原文说明此值通常介于 0.0 和 1.0 之间。
保存文件,再使用 UnrealPak 打包修改后的 .uexp。
找到多个匹配结果怎么办?
可以尝试同时搜索目标变量周围的一系列值,并核对相邻值是否按对应顺序出现,以便缩小范围。