Unity 修改UnityEditor.DLL

4 篇文章 1 订阅
1 篇文章 0 订阅

1:起因

大部分情况下是不需要修改unity的dll的,因为实力不允许,不bb了,我的unity版本2017.4.25

 unity 2017推出spriteAtlas 新的图集方式,但是每次创建了新的spriteAtlas要自己找需要打图集的文件(文件夹)

 

我想的就是 在我点这个“+”号的时候直接就把我需要打图集的文件夹全部打进去,如下图

更或者 直接把我选中的对应sprite打包进去(这个我搞不定)

于是我就想写个编辑器脚本,想着unity肯定是有这方面的接口,结果我查了api,没有!!!!!!!!

不是真的没有,是我这个版本没有,2018.1也没有 我查了2018.3有这个接口

2017里面using Unityeditor.U2D 都是不存在的。

2:方案

unity开源了C#代码 然后我就想能不能直接修改一下 点击“+”号 修改一下那个字段,然后下载了对应的源代码,查看里面的代码

就是这里了 ,然后我修改了一下

代码解释:AssetDatabase.GetAssetPath(Selection.objects[0])获取第一个文件路径

                System.IO.Directory.GetParent().name 获取文件路径的上级文件夹名称

然后 我就天真的以为直接把编译生成UnityEditor.dll替换一下unity 里面的UnityEditor.dll 就可以了 ,可是当我打开unity的时候,有问题。就是有问题!!! 如果你们没问题 给我说下

然后怎么办呢???

3:终极解决方案

最后我用ILSpy 打开unity本身的UnityEditor.dll(路径:Unity\Editor\Data\Managed)

md 明明就有,为什么不让我们用哦 (ILSpy 不能直接修改dll),我就想改一行代码就行了,咋就这么难。但是一般程序员有个毛病就是,我都知道怎么搞了,难道就想这样放弃嘛 不不不 不可能 。

然后就网上找了修改dll的方法,发现可行,也没搞过,打算试试

1:工欲善其事必先利其器:

             首先找到两个工具(1):ildasm.exe:这个是把DLL生成IL文件的一个软件

                                          (2):ilasm.exe:这个是把IL文件重新生成DLL的功能

2:生成IL

打开这个软件,把unity下的UnityEditro.dll复制一份出来,然后用ildasm打开,打开也看不懂,直接就保存一下吧

命名:normal 代表这个是正常的

然后呢,我们把下载的c#源代码也编译一下

然后把这个dll 也像刚才一样用ildasm编译成IL语言(为什么这么做 ,因为我不懂IL,直接修改IL是不可能的,只能通过两个文件对比看修改的地方)

然后打开两个IL 进行对比(直接用记事本打开就行,直接查找方法名AddPackable)

就是这里了,然后我将这一部分IL copy到normal.IL

保存

3:编译成DLL

然后就是把这个修改过的normal.IL编译成DLL了

利用ilasm.exe,添加命令 ilasm.exe /dll/resource=normal.res normal.il,然后按下回车

你就看到刷拉刷拉的的最后在你的文件夹下面出现了一个normal.dll

好接着,把这个dll重命名UnityEditor.dll,然后拷贝到unity的Data\Managed文件夹下面。ok 然后再打开unity

发现没有报错,接着我们,试试效果

例如我们要把这个文件夹整个打图集,在此目录建立一个图集

OK 完结撒花!!!纯属蛋疼 2018.3可以自己写编辑器脚本添加了。不过可以学习这个修改dll 再编译回去的方法!!!

两个工具地址:ilasm        ildasm

链接: https://pan.baidu.com/s/18KTRcza1lP8cZ0f7CjNB_g 提取码: xabb 

本来上传到csdn 但是积分要5分 还没法修改。。。。。我真tmd,,,,

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值