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,,,,

Unity 修改UnityEditor.DLL相关推荐

  1. Mono.Cecil使用示例之使指定程序集成为UnityEditor.dll的友元程序集

    Mono.Cecil使用示例之使指定程序集成为UnityEditor.dll的友元程序集 Mono.Cecil是一个开源的库,使用Mono.Cecil可以非常方便的在代码中修改C#程序集.在Unity ...

  2. Unity调用动态链接库dll和so

    [001]Unity调用动态链接库dll和so  ApolloAR https://www.jianshu.com/p/f37bb72979a1 一.PC平台 (注:环境 VS2017+Unity20 ...

  3. Unity修改批量修改名字工具

    Unity修改批量修改名字工具 using System.Collections; using System.Collections.Generic; using UnityEngine; using ...

  4. Unity编辑器UnityEditor基础(二)

    Unity编辑器UnityEditor基础(二) 终极目标 利用学到的东西制作自己的工具(自定义的窗口.Inspector.菜单.插件等等). 准备工作 还是使用上一篇的 Unity 工程,然后在 S ...

  5. unity修改飞行数据_数据预测和文化,或者我如何在没有飞行汽车的情况下学会生活...

    unity修改飞行数据 Two and a half thousand years ago, the ancient Greeks used to visit a temple in Delphi t ...

  6. unity 修改Mono反破解加密Assembly-CSharp.dll

    解密无非就为了 修改游戏功能数据.提取游戏资源.加入自己想加的广告... 加密就是保护游戏不被恶意修改,我经常看到有人说:"加什么密,你以为自己写的代码很NB?见不得人?". 我只 ...

  7. 反编译DLL并修改再生成DLL

    一. 用到的工具: 1:反编译工具ILSpy.exe:是个很不错的反编译软件,而且是免费了: 2:微软的工具ildasm.exe:这个是把DLL生成IL文件的一个软件,是微软自带了:可以在C:\Pro ...

  8. Unity——用UnityEditor拷贝FBX中的AnimationClip

    最近有个新需求,要用代码添加动画的事件,但是Unity不能直接修改FBX中的AnimationClip 在Animation窗口中可以看到,AnimationClip是Read-Only状态,用代码修 ...

  9. VS封装给Unity使用的DLL

    首先: 注意两点,一个是选择3.5,Unity最高支持到3.5 然后要选择第二个FrameWork类库  第一个会报错 然后导入Unity dll   我Unity安装在F:\AppLicationW ...

最新文章

  1. 设计模式------工厂方法模式
  2. P2709 小B的询问
  3. Java并发编程:线程的生命周期是个怎样的过程?
  4. 菲涅尔效应(Fresnel Effect)
  5. 【3】测试用例设计-因果图
  6. 图像处理实战-Python编程进阶
  7. docker安装JDK
  8. windows系统常用运行命令大全
  9. TCP/IP,Linux下多进程编程,进程复制函数fork,双返回值函数,通过父进程复制一份代码相同的子进程,父子进程执行顺序由调度算法决定,代码中获取进程执行用户的函数,数据共享状态
  10. 利用C语言实现wol网络远程唤醒
  11. 微软遥测服务服务器,使用 .REST 配置 Azure 媒体服务遥测 | Microsoft Docs
  12. 拍好人像的六个好招数
  13. 凯文·凯利:个人数据才是大未来
  14. java的标示符规则与名称命名规范
  15. 快问快答,MySQL面试夺命20问
  16. jQuery 实现动态粒子特效,太美了!!!
  17. windowxp网络无法发现其他计算机,几个步骤轻松解决win7无法访问XP系统共享问题...
  18. zk4元年拆解_科比zk4复刻拆解测评 zk4复刻配置和元年区别是什么
  19. BigBrother的大数据之旅 Day 4 Linux(4)
  20. linux安装及启动nsq流程

热门文章

  1. ADB连接android手机
  2. 18.6.1 2MSL 等待状态
  3. 余承东自爆:华为路由器重磅旗舰新品或将来袭!
  4. 三菱PLC 串口控制 发送指令控制plc端口、计数器、寄存器
  5. fortran使用MKL函数库求解普通稀疏矩阵与向量的乘积
  6. IPv6技术精要--第6章 IPv6本地链路单播地址
  7. python网络自动运维
  8. 串口协议“USB/TTL转232“模块的工作原理
  9. 搭载AI的真·物理自瞄外挂,宣称不会被发现,动视:已连锅端
  10. 什么是垂直搜索-全面了解垂直搜索引擎