判断是否可以去码

​ 可以先将整个项目文件全部拖入AssetStudio进行解包,一般来说可以查看SpriteTexture2D类型的数据观察原贴图是否存在马赛克,或者在游戏中观察马赛克是静态还是动态形式的。

​ 一般有一下几种情况:

  • 原贴图无码,实际游戏存在马赛克。可以去码

  • 原贴图有码,实际游戏存在动态马赛克,即码上加码。可以去部分码,无法完全清除

  • 原贴图有码,实际游戏是静态马赛克,是直接搬贴图用的。无法通过本文方法去码

插件去码

版本确定

​ 首先需要确定游戏架构,Unity游戏运行时一般有两种,MonoIL2CPP,由于性能和跨平台移植便捷性等原因,新游戏一般都是IL2CPP了,区分两者很简单,游戏目录有Assembly-CSharp.dll这个DLL就是mono,包含有il2cpp_data目录就是il2cpp。

​ 确定引擎版本可右键启动游戏的exe文件,选择属性-详细信息-产品版本可以得到

插件安装

​ 首先安装插件框架

​ 注意IL2CPP使用6.0版本,Mono请使用5.4版本

​ 按照BepInEx的安装说明解压到游戏目录后启动游戏即可,注意需要选择对应好的版本,具体可参照具体项目的README文档。

翻译插件

​ 按照XUnity.AutoTranslator的安装说明解压到指定目录,具体可参照具体项目的README文档。

​ 此外,部分游戏可能已经内置了ReiPatcher导致后续我们使用BeplnEx安装XUnity.AutoTranslator会出现冲突报错,可以先使用以下脚本卸载ReiPatcher:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
@echo off
title REIPATCHER CLEANUP
chcp 65001
color 0a
cls

:start
echo.
echo Make sure you're running this .bat file from the game folder.
echo -------------------------------------
echo Select a funcion.
echo -------------------------------------
echo.
echo [1] Full clean up - Remove REI
echo.
echo [2] Close
echo.


choice /c 12 /m "Choose one:"

if errorlevel 2 (
cls
echo.
goto end
)


if errorlevel 1 (
cls.
echo.
echo Removing Plugins please wait...
rd /q /s AutoTranslator
rd /q /s ReiPatcher
del /q /f "SetupReiPatcherAndAutoTranslator.exe"
del /q /f *"(Patch and Run).*"
cls
echo Moving to *_Data\Managed
timeout 5
cd *_Re_Data\Managed
cls.
echo Resuming cleanup
timeout 5
rd /q /s Translators
del /q /f "UnityEngine.CoreModule.dll" "0Harmony.dll" "ExIni.dll" "Mono.Cecil.dll" "MonoMod.RuntimeDetour.dll" "MonoMod.Utils.dll" "ReiPatcher.exe" "XUnity.AutoTranslator.Plugin.Core.dll" "XUnity.AutoTranslator.Plugin.ExtProtocol.dll" "XUnity.Common.dll" "XUnity.ResourceRedirector.dll"
ren "UnityEngine.CoreModule.dll.*.bak" "UnityEngine.CoreModule.dll.bak"
copy "UnityEngine.CoreModule.dll.bak" "UnityEngine.CoreModule.dll"
exit
)

:done
cls.
echo Process Complete...
echo Exiting in...
timeout 5
exit

:end
cls.
echo Exiting...
timeout 5
exit

​ 保存为bat文件放在项目根目录双击运行即可。

去码插件

​ 选择对应版本的UniversalUnityDemosaics下载后解压将dll文件放入BepInEx\plugins目录即可,每个dll是不同去码方式,不一定需要全部放入

手动去码

​ 有时候无法使用自动去码或自动去码效果不佳时,可尝试手动去码。

​ 首先使用AssetStudioModGUI加载项目文件,搜索关键词mosamosaicmozaiccensormscmozaikupixeltextureCGextra等关键词。

​ 找到关键文件后记录下Path IDSize来源的文件使用UABEA进行相应修改即可。

​ 进行具体操作前请先注意要备份!

​ 对于不同情况存在不同解决方法

修改.assets:

  • 同时带有“live2d”和“mosaic”字段的文件,尝试使用UABEA删除该文件即可;

  • 带有“mosaic”字段的shader类型文件,首先通过UABEA使用Export Dump导出为txt文件,替换0 float val = 150 float val = 0后在使用Import Dump导回即可;

  • 带有“mosaic”字段的mesh类型文件,可以尝试使用UABEA删除该文件;

  • 存在名字类似为”LocalPixelizeURPRendererFeature”的MonoBehaviour类型文件,使用UABEA将该文件导出,替换m_Active = 1m_Active = 0后重新导入回去即可

修改Assembly-CSharp.dll

​ 或者尝试修改Assembly-CSharp.dll文件:

  1. 用dnSpy工具加载该文件;

  2. 搜索mosaic,点击结果跳转到类;

  3. 编译类,将“float”浮点数的值改为“0.01f”(要足够小);

  4. 编译后保存。

工具下载链接

参考文章