Пример #1
0
        List <GameObject> GetAllGameObjectsInScene()
        {
            List <GameObject> allGameObjects = new List <GameObject>();

            foreach (GameObject root in MemoryStat.GetAllRootGamObjects())
            {
                GetAllChildren(allGameObjects, root);
            }
            return(allGameObjects);
        }
Пример #2
0
        void CheckMemories()
        {
            if (_memoryStat == null)
            {
                _memoryStat = new MemoryStat();
            }

            _memoryStat.DoStat(true);
            long texturesMemories         = _memoryStat.CalcTextureMemories();
            long meshesCombinedMemories   = _memoryStat.CalcMeshesCombinedMemories();
            long meshesUncombinedMemories = _memoryStat.CalcMeshesUncombinedMemories();
            long totalMemories            = _memoryStat.CalcTotalMemories(texturesMemories, meshesCombinedMemories, meshesUncombinedMemories, 0);

            Debug.Log("场景总内存/Mesh占用/贴图占用: " + MemoryStat.GetMemoriesString(totalMemories) + "/" + MemoryStat.GetMemoriesString(meshesCombinedMemories + meshesUncombinedMemories) + "/" + MemoryStat.GetMemoriesString(texturesMemories) + "。 详情请运行场景内存统计工具查看!");
        }
Пример #3
0
        void OnGUI()
        {
            //_memoryStat._rootGo = EditorGUILayout.ObjectField("Root Object", _memoryStat._rootGo, typeof(GameObject), true) as GameObject;

            if (GUILayout.Button("Start"))
            {
                _memoryStat.DoStat(true);
            }


            long texturesMemories         = _memoryStat.CalcTextureMemories();
            long meshesCombinedMemories   = _memoryStat.CalcMeshesCombinedMemories();
            long meshesUncombinedMemories = _memoryStat.CalcMeshesUncombinedMemories();
            long animationClipsMemories   = _memoryStat.CalcAnimationClipsMemories();
            long totalMemories            = _memoryStat.CalcTotalMemories(texturesMemories, meshesCombinedMemories, meshesUncombinedMemories, animationClipsMemories);

            GUILayout.Label("估计总内存:" + MemoryStat.GetMemoriesString(totalMemories));
            GUILayout.Label("贴图占用:" + MemoryStat.GetMemoriesString(texturesMemories));
            GUILayout.Label("Mesh占用:" + MemoryStat.GetMemoriesString(meshesCombinedMemories + meshesUncombinedMemories) + " (其中未合并Mesh占用:" + MemoryStat.GetMemoriesString(meshesUncombinedMemories) + ")");
            // GUILayout.Label("动画占用:" + MemoryStat.GetMemoriesString(animationClipsMemories));


            _currentPage = GUILayout.Toolbar(_currentPage, _inspectToolbarStrings);
            switch (_currentPage)
            {
            case 0:
                GUILayout.Label("(显示格式 —— 贴图名: 占用内存大小)");
                ListTextures();
                break;

            case 1:
                GUILayout.Label("(以下为合并mesh信息        显示格式 —— Mesh名: 占用内存大小/总顶点数/使用次数)");
                ListMeshes();
                break;

                /*
                 * case 2:
                 *  GUILayout.Label("(显示格式 —— 动画名: 占用内存大小)");
                 *  ListAnimationClips();
                 *  break;
                 */
            }
        }
Пример #4
0
        private void ListTextures()
        {
            _textureListScrollPos = EditorGUILayout.BeginScrollView(_textureListScrollPos);

            var dicSort = from objDic in _memoryStat._activeTextures orderby objDic.Value descending select objDic;

            foreach (KeyValuePair <Texture, int> kvp in dicSort)
            {
                EditorGUILayout.BeginHorizontal();
                GUILayout.Label(kvp.Key.name, GUILayout.Width(300));
                GUILayout.Label(MemoryStat.GetMemoriesString(kvp.Value), GUILayout.Width(100));
                if (GUILayout.Button("定位", GUILayout.Width(50)))
                {
                    Selection.objects = new Object[] { kvp.Key }
                }
                ;
                EditorGUILayout.EndHorizontal();
            }
            EditorGUILayout.EndScrollView();
        }
Пример #5
0
        private void ListMeshes()
        {
            _meshListScrollPos = EditorGUILayout.BeginScrollView(_meshListScrollPos);


            var dicSort = from objDic in _memoryStat._meshesCombined orderby objDic.Value.memorySize descending select objDic;

            foreach (KeyValuePair <Mesh, MemoryStat.MeshInfo> kvp in dicSort)
            {
                EditorGUILayout.BeginHorizontal();
                GUILayout.Label(kvp.Key.name, GUILayout.Width(300));
                GUILayout.Label(MemoryStat.GetMemoriesString(kvp.Value.memorySize) + "/" + kvp.Value.verticesTotal + "/" + kvp.Value.usedCount);
                GUILayout.FlexibleSpace();
                if (GUILayout.Button("定位", GUILayout.Width(50)))
                {
                    Selection.objects = new Object[] { kvp.Key }
                }
                ;
                EditorGUILayout.EndHorizontal();
            }

            EditorGUILayout.EndScrollView();
        }
Пример #6
0
 void InitData()
 {
     _memoryStat = new MemoryStat();
 }