UGUI源码查看编辑与调试
unity自4.6以后有了自己全新的UI系统UGUI。由于是自身系统在性能和效率等方面也逐步领先NGUI,各公司在新项目上也逐步的使用UGUI进行UI方面的开发。并且Unity官方也将其进行了开源,这使得开发者可以更加方便使用,并可一探内部原理学习其逻辑 。
UGUI开源工程地址在GitHub上:https://bitbucket.org/Unity-Technologies/ui/downloads?tab=tags
工程down下来之后,可以使用VS直接打开工程看源码。源码中有三个工程
UnityEditor.UI工程生成Editor/UnityEditor.UI.dll,主要包含各UGUI控件在Editor的Inspector功能。
UnityEngine.UI工程生成Standalone/UnityEngine.UI.dll,主要是UGUI在发布包中使用的功能。
UnityEngine.UI-Editor工程生成UnityEngine.UI.dll.其实可以认为是UnityEngine.UI工程的一个副本,在这里有个疑问就是这个工程并没有任何源码完全是UnityEngine.UI工程的,这是如何在VS中实现的,知道的同学请不吝赐教。
可是如何将其应用到自己的项目之中呢?
在这里我介绍一种个人觉得挺好的方法来处理。我们使用unity4.6.5来进行试验。
首先创建unity工程,文件夹名为TestUIDLL,并将下载下来的源码文件夹命名为UGUI4.6.5
在进行继续操作之前我们来认识两个目录:在unity安装目录下 Editor\Data\UnityExtensions\Unity\GUISystem,其中UnityEngine.UI.dll就是unity使用的UGUI库。简称A目录,下文有用。
其次是在工程文件夹也就是上面创建的TestUIDLL\Library\UnityAssemblies其中的UnityEngine.UI.dll就是工程脚本引用的UGUI库,这是一个创建工程Unity就会自动帮助我们创建的文件夹,我们编写脚本引用的unity的库都在里面。可以在解决方案中查看引用的UI.dll的位置。简称B目录,下文有用。
使用VS打开刚才工程之后,在解决方案上右键->添加->添加现有项 将UGUI中UnityEngine.UI工程添加进来,也就是上图中UGUI4.6.5文件夹下的工程。
在UnityEngine.UI工程上右键属性->生成 如图:
在输出路径中选择刚才介绍的A目录,选择好之后保存。
因为我们刚才提到了两个文件夹这两个文件夹中的UI.dll必须保持一致,如果不一致会使得自己的脚本报错(粗暴的解决方法就删掉Library,重新关闭unity重新打开工程,unity会帮我们生成一份,其实unity做的就是从安装目录中copy一份过来),当然如果仅仅是查看相应UGUI的源码,那就可以到此结束了,只需要重新生成即可。当然重新生成之前建议先复制一份原来的目录文件。
如果需要修改源码你就需要dll输出到这两个文件夹下。你可以手动copy但是太过麻烦。这里可以使用生成事件,如下图:
这里简单介绍一下这条命令:
copy的第一个参数$(TargetPath), 是宏里面的路径,你可以看看自己的宏里面这个宏的值是多少,其实就是刚介绍的A目录下的UnityEngine.UI.dll。第二个参数就是B目录。
重新编译UI工程。此时编译好的dll会自动替换A、B两目录中的UI dll。至此我们就可以对UGUI代码进行编辑查看并调试了。但是在实际项目中不建议对UGUI进行修改,可以用继承的方式建立一套自己的UI系统。
欢迎讨论。