APSchmidt 发表于 2021-12-12 09:45

UGUI源码调试和阅读的最佳方式

Unity的ugui是作为一个插件放在Unity里面的,所以没有ugui,unity也一样能正常运行。基于这一点,用以下方法进行UGUI源码调试,会非常方便。
0. 准备工作


[*]根据自己电脑上的Unity安装目录,找到UGUI存放的地方。进入此目录(我电脑上的目录是D:\Program Files\Unity\Editor\Data\UnityExtensions\Unity)。
[*]Unity目录下的GUISytem文件夹就是UGUI存放的地方。
[*]首先,备份此文件夹。
[*]然后,删除此文件夹。(再次进入Unity程序,会发现没有UI选项了)
[*]至此,准备工作做完。
1. 下载UGUI源码

可以在Unity官方开源的地方下载。
我下载的版本是2017.2f3,zip格式。



2. 拷贝UGUI代码至项目文件


[*]首先,打开Unity并创建一个新的项目。
[*]然后,把刚刚下载的UGUI源码中UnityEditor.UI、UnityEngine.UI两个文件夹,拷贝到刚刚新建的项目Assets目录下。
[*]删除两个文件夹里面的bin、obj和Properties文件夹,以及.csproj文件。这些都是不必要的内容,只保留源码。
[*]UnityEditor.UI文件夹是UGUI的编辑器实现类,因为Unity中规定编辑器实现类必须以Editor命名,所以要将UnityEditor.UI改名为Editor。
[*]最后,重启Unity,再打开刚刚新建的项目(为了让加入的UI生效)。(至此,已经将UGUI源码添加到了项目里面,为源码调试做好了准备)
3. 源码调试测试


[*]右键创建一个UGUI的Button。
[*]然后在Button的Inspector面板里的Button(Script)处,右键-Edit Script,这样就打开了Button脚本的源码。





[*]在源码中Button.cs中找到Press()方法,并在方法内的第一行代码处打断点,然后点击附加到Unity,运行此脚本。





[*]然后回到Unity,运行这个项目,再点击Button按钮。你会发现刚刚的断点命中了。




这样调试源码就方便很多,以后学习UGUI源码就用这种方式。还有,unity的官方文档(在文档的UnityEngine.UI模块下)对UGUI的解释很清楚了,可以对照着看,会轻松很多。

IT圈老男孩1 发表于 2021-12-12 09:52

GUISytem删除后 会报C:/Users/33239/AppData/Local/Unity/cache/packages/http://packages.unity.com/com.unity.package-manager-ui@1.8.8/Editor/Sources/Services/Packages/PackageInfo.cs(6,19): error CS0234: The type or namespace name `UI' does not exist in the namespace `UnityEngine'. Are you missing an assembly reference?
错误

NoiseFloor 发表于 2021-12-12 09:58

你是不是打开的项目文件里面已经引用了UI?你创建全新的工程打开试试。

JamesB 发表于 2021-12-12 09:59

如果只是为了调试ugui源代码而不做修改的话,可以直接用JetBrains Rider这个IDE吖,自带反编译工具的,还能看到调试 stl源码呢

JoshWindsor 发表于 2021-12-12 10:02

此方法只适用于新建工程进行源码学习调试使用。不适用于已有项目调试。

DomDomm 发表于 2021-12-12 10:07

同样的报错,创建全新的工程也没用。cache文件夹下packageInfo.cs中引用了UnityEngine.UI空间

FeastSC 发表于 2021-12-12 10:13

Rider天下第一

Ilingis 发表于 2021-12-12 10:21

Rider转到定义,跳转到源码里面断点,不止UGUI

maltadirk 发表于 2021-12-12 10:25

这个是package的问题,找到package manager卸载相关的package就可以了

johnsoncodehk 发表于 2021-12-12 10:29

现在下载网页变404了,老哥有网盘吗
页: [1] 2
查看完整版本: UGUI源码调试和阅读的最佳方式