大部分情况下是不需要修改unity的dll的,因为实力不允许,不bb了,我的unity版本2017.4.25
unity 2017推出spriteAtlas 新的图集方式,但是每次创建了新的spriteAtlas要自己找需要打图集的文件(文件夹)
我想的就是 在我点这个“+”号的时候直接就把我需要打图集的文件夹全部打进去,如下图
更或者 直接把我选中的对应sprite打包进去(这个我搞不定)
于是我就想写个编辑器脚本,想着unity肯定是有这方面的接口,结果我查了api,没有!!!!!!!!
不是真的没有,是我这个版本没有,2018.1也没有 我查了2018.3有这个接口
2017里面using Unityeditor.U2D 都是不存在的。
unity开源了C#代码 然后我就想能不能直接修改一下 点击“+”号 修改一下那个字段,然后下载了对应的源代码,查看里面的代码
就是这里了 ,然后我修改了一下
代码解释:AssetDatabase.GetAssetPath(Selection.objects[0])获取第一个文件路径
System.IO.Directory.GetParent().name 获取文件路径的上级文件夹名称
然后 我就天真的以为直接把编译生成UnityEditor.dll替换一下unity 里面的UnityEditor.dll 就可以了 ,可是当我打开unity的时候,有问题。就是有问题!!! 如果你们没问题 给我说下
然后怎么办呢???
最后我用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,,,,