首页 > Unity3D频道 > 【Unity3D拓展编辑器】 > Unity3D研究院编辑器之ManagedStaticReferences()静态引用(二十九)
2017
05-30

Unity3D研究院编辑器之ManagedStaticReferences()静态引用(二十九)

Unity的Profiler可以看出来内存,但是遇到ManagedStaticReferences()估计大家都跪了。因为这个资源被静态引用了,然后我们并不知道它被哪里静态引用了。

我想了个办法,可以通过反射来查询它。先讲一下原理

1.反射dll

2.遍历所有的.cs 取出所有带static的属性。

3.对static下的所有属性以及子属性进行深度遍历,最终即可得出来被静态引用的资源。

如下代码所示,运行环境unity5.2.2

如下图所示,静态引用已经查出来了。
Unity3D研究院编辑器之ManagedStaticReferences()静态引用(二十九) - 雨松MOMO程序研究院 - 1

问题:

1.这个脚本查不出lua里的静态引用。lua可以遍历G里的所有table表,和上面执行类型的操作就可以查出来。

2.如果想定向查询,比如专门查某一个资源在内存中哪里被引用,也和上面算法差不多改改就可以。

3.Unity在Editor下的Profiler其实是非常不准确的,因为自己在Project视图中选择一些资源unity也会记录在Profiler中,并且没办法完全清除。如果想测试内存,可以打一个pc包在连上Profiler在看即可。

最后,如果大家有更好的方法,欢迎再下面给我留言,我们一起讨论~

雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!

--

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。

Unity3D研究院编辑器之ManagedStaticReferences()静态引用(二十九)》有 2 条评论

  1. boboshu 说:

    我这边项目 泄露的还是查不出来……

留下一个回复

你的email不会被公开。