Unity3D研究院编辑器之脚本获取资源内存和硬盘大小
内存
使用Profiler可以查看某个资源的内存占用情况,但是必须启动游戏,并且待查看的资源已经载入游戏中。我希望的是不启动游戏,也能看到它的内存好做统计。
硬盘
由于unity中的资源压缩格式记录在meta中所以,在文件夹中看到的资源大小是不正确的。打开unity需要选择一个资源,比如Texture、然后在右侧Inspector面板最下面可以看见它真实的硬盘占用。这个数据我也希望那个可以脚本取到,这样我好做统计工具。
在Project视图中先选择一个Texture 然后点击menuitem (“1/1”)即可
1
2
3
4
5
6
7
8
9
10
|
[MenuItem("1/1")]
public static void menu()
{
Texture target = Selection.activeObject as Texture;
var type = Types.GetType ("UnityEditor.TextureUtil", "UnityEditor.dll");
MethodInfo methodInfo = type.GetMethod ("GetStorageMemorySize", BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public);
Debug.Log("内存占用:"+EditorUtility.FormatBytes(Profiler.GetRuntimeMemorySize(Selection.activeObject)));
Debug.Log("硬盘占用:"+EditorUtility.FormatBytes((int)methodInfo.Invoke(null,new object[]{target})));
}
|
内存的话unity提供了API Profiler.GetRuntimMemorySize。
硬盘的话unity没有提供,我查看了它的源码需要通过反射可以获取到。如果你还想查看别的资源的硬盘占用,自行查看一下他editor下的代码,用上面这样的代码反射获取出来即可。
- 本文固定链接: http://www.xuanyusong.com/archives/4263
- 转载请注明: 雨松MOMO 2016年10月29日 于 雨松MOMO程序研究院 发表
失败是什么?没有什么,只是更走近成功一步;成功是什么?就是走过了所有通向失败的路,只剩下一条路,那就是成功的路。
posted on 2016-11-22 09:42 Sun‘刺眼的博客 阅读(1165) 评论(0) 编辑 收藏 举报