重定位原理,将文件中的GUID替换为想替换的GUID进行重定位
建立重定位表 ,重定位后GUID文件中内容进行替换
GUID 文件 重定位GUID
da77c7bbf69f66ab2145560542327715 H:\AssetRipper_win_x64\data\ExportedProject\Assets\Plugins\Rewired_Core.dll.meta
143b0b6c111942d138502348760c425a H:\AssetRipper_win_x64\data\ExportedProject\Assets\Plugins\Rewired_Windows.dll.meta
86f8915cf5533d44a83aa351b693ecd2 H:\AssetRipper_win_x64\data\ExportedProject\Assets\PrefabInstance\Rewired Input Manager.prefab.meta
8c15d02c95ee223f94f489338130b924 H:\AssetRipper_win_x64\data\ExportedProject\Assets\Scripts\Assembly-CSharp\Rewired\Data\UserDataStore_PlayerPrefs.cs.meta
e00661d5533343508e1c48b1f2eaa74a H:\AssetRipper_win_x64\data\ExportedProject\Assets\Scripts\Assembly-CSharp\Rewired\InputManager.cs.meta
7473025fa4b1bbfae7c090b0775b1bff H:\AssetRipper_win_x64\data\ExportedProject\Assets\Scripts\Assembly-CSharp\Rewired\Integration\UnityUI\PlayerPointerEventData.cs.meta
2357180b1ce51d59a68d70f1f5b476ae H:\AssetRipper_win_x64\data\ExportedProject\Assets\Scripts\Assembly-CSharp\Rewired\Integration\UnityUI\RewiredPointerInputModule.cs.meta
b5a076c1f3ef504faef355940bb6cf59 H:\AssetRipper_win_x64\data\ExportedProject\Assets\Scripts\Assembly-CSharp\Rewired\Integration\UnityUI\RewiredStandaloneInputModule.cs.meta
fa2a8ff64442e09788d6d658bab2df43 H:\AssetRipper_win_x64\data\ExportedProject\Assets\Scripts\Assembly-CSharp\Rewired\Platforms\Switch\NintendoSwitchInputManager.cs.meta
java代码实现
static void Relocation() throws IOException {
Map<String,String> map = new HashMap<>();
String input = "H:\\AssetRipper_win_x64\\data\\ExportedProject\\Assets\\_Game\\Scenes\\scene_debug.unity";
map.put("e00661d5533343508e1c48b1f2eaa74a","cd600cea81e6679419aca00e287b5733");
String out ="2.txt";
WriteRelocation(map,input,out);
}
static void WriteRelocation(Map<String,String> map ,String inPutFile,String outFile ) throws IOException {
Vector<String> vet = Myfile.readVetKeyData(inPutFile);
Vector<String> vetWrite = new Vector<>();
for (String s:vet){
String temp = s;
String guid = GetGUIID(s);
if(guid!=""){
if(map.containsKey(guid)){
System.out.println(guid);
temp = s.replace(guid,map.get(guid));
}
}
vetWrite.add(temp);
}
Myfile.WriteVetCodeValue(outFile,vetWrite);//写入指定编码
}
public static String GetGUIID(String s){
Pattern pattern = Pattern.compile("(guid: )([0-9a-fA-F]+)");
Matcher matcher = pattern.matcher(s);
String re = "";
if(matcher.find()){
re = matcher.group(2);
}
return re;
}