某游戏引擎成品修改内置字符串方法笔记
本帖最后由 zjh16529 于 2019-6-6 18:30 编辑最近遇到一个问题某游戏引擎的游戏都知道代码可以在Assembly-CSharp.dll里面修改
可是当数据直接在引擎里面赋值的时候,怎么找到字符串并修改呢?点这里可以看我的提问
我想到的方法还是从Assembly-CSharp.dll里面修改
如果大佬有更好的方法麻烦教教我
https://static.52pojie.cn/static/image/hrline/4.gif
下面演示下过程 先自己搞一个Demo出来
有7个文本框,每个文本框内容不同【模拟一下正常软件】,我要修改我想修改的文本框的内容和字体大小
然后随便来一个空代码随便绑定在一个物体上【模拟一下正常软件,因为修改也至少要有一个脚本才行】
https://static.52pojie.cn/static/image/hrline/4.gif
方法1:
感谢@艾莉希雅 大佬
Data目录下会有一个level0的文件 后面的0代表场景顺序
我的Demo场景只有一个场景自然只有一个0 游戏一般会有多个场景 0.1.2.3..... 至于要改的是哪一个,,应该只有自己挨个打开看了
然后用Notepad++打开转成UTF-8编码
直接就能看到自己的字符串了。。。直接修改就行
注意保持文本长度一致,不然改了后打不开!
https://static.52pojie.cn/static/image/hrline/4.gif
方法2:
OK 然后打包出来 Dnspy 反编译Assembly-CSharp.dll【PC和安卓都一样为了方便我就打包PC了】
可以正常的看到之前的代码。。
但是编辑的时候遇到个问题。。因为文字框是UI必须Using UnityEngine.UI.dll。。然后我发了一个问题
Dnspy怎么添加引用?, 在大佬的解答下 导出工程然后用vs打开添加引用就OK了
接下来开始用代码找到我们的文字框并修改
【直接贴代码了】
这里说明一下 在Unity里面 每一个物体都是一个GameObjet不过只是每个物体带的组件不一样功能就不一样
把改好的dll 替换进去 直接启动 OK 了
大佬们有更好的办法务必教教我QAQ 谢谢
本帖最后由 另类飞翔 于 2019-4-4 08:58 编辑
还有一种方法,当没有挂载脚本的时候,自己仿写一个Assembly_Csharp,在模块里编写你的上面的修改代码,然函数,注入后去挂载脚本就好了
GameObject gameObject = new GameObject("Test");
gameObject.AddComponent<Test>(); 另类飞翔 发表于 2019-4-4 08:44
还有一种方法,当没有挂载脚本的时候,自己仿写一个Assembly_Csharp,在模块里编写你的上面的修改代码,然 ...
你这个方法绝对有问题
而且没挂任何脚本的话根本不会运行这一段代码吧
动态加载物体 坐标你怎么算不好放在你想放的地方不说。。text组件不是必须在canvas下才行 谢谢教程,unity学习中
事实上……修改UTF8编码就…… 哦顺便附上UTF-8编码转换
http://www.mytju.com/classcode/tools/encode_utf8.asp
不是广告…… 谢谢LZ分享。 佩服楼主的毅力和学习能力,同时也谢谢楼主的分享 unity学习 佩服楼主的毅力和学习能力,同时也谢谢楼主的分享。 这个厉害,封包过程中会报错吗
页:
[1]
2