关于后缀名为.unity3d的游戏汉化

B站影视 2025-01-22 10:47 2

摘要:打开AssetStudioGUI,打开File --> Load File,选择你要修改的后缀名.unity3d文件。加载好后点击Asset List,再打开Filter Type,只勾选Texture2D。

(该文章仅适用于使用 Unity Web Player 插件运行的 .unity3d 后缀名游戏文件的汉化。)

使用到的工具:

AssetsBundleExtractor V2.2

AssetsBundleExtractor V3.0

dnSpy V6.1.8.0

UnityEX V1.9.0

AssetStudioGUI V0.16.47

一、替换图片

打开AssetStudioGUI,打开File --> Load File,选择你要修改的后缀名.unity3d文件。加载好后点击Asset List,再打开Filter Type,只勾选Texture2D。

此时在Asset List下显示的所有资源都是游戏的图片。找到你要修改的图片,并记住它的PathID。

打开AssetsBundleExtractor V3.0,点击左上角 文件 --> 打开,选择你要修改的.unity3d文件。

加载完成后,找到名字和PathID都相同的图片,选中后点击插件,选择Export to .png。

将图片导出后,进行修改,然后点击插件,选择Edit,点击载入,选择修改好的图片,最后点击好的,修改好的图片就导入成功了。

将修改好图片的导入后,点击文件 --> 应用并保存全部。

此时的游戏是无法直接运行的,打开AssetsBundleExtractor V2.2,点击左上角 文件 --> 压缩。选择前面保存下来的.unity3d-mod文件进行压缩,压缩后的文件就是可以运行的文件了。

附上修改前后的对比。

关于如何在本地运行.unity3d后缀名的游戏,请翻到最底下。

二、替换文本

打开AssetStudioGUI,打开File --> Load File,选择你要修改的后缀名.unity3d文件。加载好后点击Asset List,再打开Filter Type,MonoBehaviour和TextAsset,找到要修改的的文本。

根据PathID,在AssetsBundleExtractor V3.0里找到对应的文本(可能在任何一个Assets里)

如果文本在TextAsset

将文本选中,导出转储,导出为json文件,用编辑器(由于Windows自带的记事本会自作主张的在文件的添加不需要的字符,因此不能使用记事本来编辑。如果在安装过程中报错,请更换编辑器。)打开后修改。

回到AssetsBundleExtractor V3.0,选择导入转储,文件类型改为json文件,导入修改好的文本。

导入后应用并保存全部,压缩。

如果文本在MonoBehaviour里

记住文本所在的Assets名,将其导出。

使用UnityEX打开刚刚导出的文件。

根据PathID找到文本并导出。

导出的文件将保存在同目录的Unity_assets_Files文件夹里。

使用DnSpy打开导出的文本文件,右键界面,打开十六进制编辑器。

选中文本部分的第一个字符,输入你要替换进去的文本,将剩余不需要的部分用空格替换。对文本由于修改十六进制数据容易导致文件损坏,使用时应做好备份。

仅能修改已有文本的位置,不能超出原文本范围,否则文件损坏。

由于修改十六进制数据的局限性,文本的十六进制数据长度无法更改。

修改完成之后保存,通过UnityEX将修改好的文本导回Assets文件中。

(只要文件位置没有更改,点击后读条完即导入成功。)

通过AssetsBundleExtractor V3.0将Assets文件导入。

导入后应用并保存全部,压缩。

启动之后可以看到,文本已经修改成功了。

文本在 .dll 文件里:

如果在MonoBehaviour和TextAsset都没有找到想要修改的文本,那文本可能在.dll文件里。

以Assembly-CSharp.dl为例。

将Assembly-CSharp.dll导出,使用Dnspy打开,通过搜索程序集功能搜索文本关键词。

可以看到对应的文本,但是由于通过AssetsBundleExtractor将Assembly-CSharp.dll导入.unity3d文件中,会导致.unity3d文件损坏。因此我们只能通过别的方式来修改。

使用AssetsBundleExtractor V3.0打开.unity3d文件时,会先将文件解压缩。

在选择的文件夹里会出现一个同名的.unity3d-decompressed文件,这个文件就是解压缩后的文件。使用Dnspy打开它,然后打开16进制编辑器。

我们可以在16进制数据里找到原来的文本。这里可以使用查找功能。

首先将要查找的文本转为16进制Unicode编码,在16进制编辑器界面按下Ctrl+F,即可换出查找栏,将16进制Unicode编码复制进去。

(此处16进制数据的意思是Rat King)

将要替换进去的文本复制,选中被替换文本16进制数据的第一个字符(不要选错了)。

选中后右键粘贴->粘贴(Unicode)。

可以看到这里已经替换掉了Rat以及一个空格,接着我们将King用空格替换掉。

选中右边文本t King的第一个字符t,选中后按空格键,可以看到t已经被替换成了空格。

接着选择第二个字符K,按下空格,以此类推。

将不需要的字符都替换成空格后,保存文件,使用AssetsBundleExtractor V2.2压缩后打开。

可以看到文本已经修改成功。

三、替换字体

打开AssetStudioGUI,打开File --> Load File,选择你要修改的后缀名.unity3d文件。加载好后点击Asset List,再打开Filter Type,只勾选Font,找到要替换的字体。

根据PathID,在AssetsBundleExtractor V3.0里找到对应的字体(可能在任何一个Assets里)

记住字体所在的Assets名,将其导出。

使用UnityEX打开导出的Assets文件,找到字体,导出,将要替入的字体文件名改成与导出的文件一直,复制到同一目录,选择替换。

替换后通过UnityEX将修改好的字体导回Assets文件中。

使用AssetsBundleExtractor V3.0将Assets文件导回.unity3d文件中。

导入后应用并保存全部,压缩。(懒得上图了,上面文本的图就是修改过字体的)

附:在本地运行后缀名.unity3d的游戏。

html, body {

margin: 0;

padding: 0;

}

新建文本文档,将后缀名改为.html,将以上文本复制进去。其中width: 和height: 后面是界面的高度和宽度,可根据情况修改。

将“修改图片字体后修改文本.unity3d”修改为你游戏的文件名。

将.unity3d文件和.html文件放在同一个目录下,使用浏览器启动.html文件。

来源:有钱真的很酷

相关推荐