unity游戏去码方法
dlsite上发售的同人作品unity小游戏去mosaic方法,只适合动态,不是和静态,如图片。主要有修改.assets中定义mosaic、censor的文件或者删除mesh、编译Assembly-CSharp.dll、使用BepInEx框架加载UniversalUnityDemosaics插件这3种方法。
思路分析:
AssetStudio加载文件夹,查看texture2D,判断是在图片上打码,如果是就只能改图。
搜索mosaic、censor等有没有关键的shader、Mesh类型文件,有就用UABEA修改,Mesh就删除。
不成功就使用BepInEx框架加载UniversalUnityDemosaics插件。
最后再尝试编译Assembly-CSharp.dll,不一定有都不行只能自己分析游戏了。
软件都可以在GitHub上找到。
使用软件 :
UABEA
AssetStudio
dnSpy
主要记录修改成功的游戏和方法,方法相同的不再列出。步骤都为主要步骤,需要有一定的操作能力,软件的使用方法不说明,请参考官方文档。
1. 修改.assets方法
此方法主要找到有_CellSize、_blockSize、 colMask的shader,shader一般不建议直接删除,少了shader着色器会让本来打码位置部分显示为紫色,没有着色的原因。
详见的文件名:
Ist_MosaicField
Live2d Cubism_Unlit_Mosaic
Live2d Cubism_Unlit_Mosaic Masked
Custom\Pixelate
1.1 Live2d游戏
对于untiy用Live2d的游戏,前提是不是在图片上打码,例如RJ280657
AssetStudio加载游戏文件夹,搜索mosaic。
找到Live2d Cubism_Unlit_Mosaic和Live2d Cubism_Unlit_Mosaic Masked,记下PathID和Size的值,AssetStudio查看来源的.assets。
UABEA打开此.assets然后删除这个文件,保存再替换。
1.2 通用修改方法
多数unity游戏都看使用此方法,例如RJ286256、 RJ302401。
AssetStudio加载游戏文件夹,搜索mosaic
把含有mosaic字段的Shader类型,即Ist_MosaicField,记下PathID和Size的值,AssetStudio查看来源的.assets。
UABEA打开此.assets,找到对应的`PathID 514`和`Size`的文件,选择`Export Dump`导出文件。
用文件编辑器打开,搜索名0 float val = 15(即`0 SerializedShaderFloatValue colMask`下面的值),全部替换0 float val = 0,保存。
UABEA在`Import dump`替换为修改后的文件。
如果关键词搜索为空,可以尝试 找shader有 _CellSize的内容,例如
Custom\Pixelate 中`_CellSize ("Cell Size", Vector) = (0.02,0.02,0,0)`,将0 float val = 15全部替换0 float val = 0。
1.3 删除mesh
如果去码不完整可以尝试mesh,例如RJ308908。

2. 修改Assembly-CSharp.dll
修改dll需要看懂代码,有时候unity游戏不一样有Assembly-CSharp.dll。例如RJ283778
备份Assembly-CSharp.dll, 用dnSpy加载Assembly-CSharp.dll文件。
搜索mosaic,搜索框点击结果跳转到类。
右键-编译类,把`float`浮点数的数值改成`0.01f`。
编译`然后`文件-保存模块`。

3. BepInEx框架
通过BepInEx插件注入unity游戏,禁用或删除加载mosaic的方法或材质,不需要手动去修改assets和dll文件,koikatu、com3d2等有专门的插件。
UniversalUnityDemosaics,github上可找到。详细介绍请看文档。
3.1 使用方法
加载`BepInEx`,首先查看游戏是64位还是32位,可以从任务管理器中查看。把`BepInEx`复制在执行`unity`游戏目录上,运行游戏。
如果游戏加载成功加载插件,会在`BepInEx`文件夹生成`config`,`plugins`等文件夹,如果没有新文件夹,可以不支持此游戏,或者不是对应的系统版本。再或者`BepInEx`不支持此游戏。
在`config/BepInEx.cfg`修改配置`Logging.Console.Enabled = true`打开控制台,查看`BepInEx`是否正确加载。
加载`UniversalUnityDemosaics`插件,将`DumbRendererDemosaic.dll`复制到`BepInEx/plugins`文件夹中,打开游戏,查看是否正常去码,不行就把`CombinedMeshDemosaic.dll`复制进去。
加载插件时可以看看`控制台`信息,`UniversalUnityDemosaics`插件不需要全部复制进去,可能会冲突。
测试游戏
RJ168748可以加载`BepInEx`,复制`CombinedMeshDemosaic.dll`和`DumbRendererDemosaic.dll`成功去码。

此方法只是记录和分享个人测试成功的,提供一个思路,但不一定适合所有unity游戏。