void OnGUI()
    {
        modelAssetLoader = GameObject.FindObjectOfType <ModelAssetLoader>();
        if (modelAssetLoader == null)
        {
            Debug.LogError("modelAssetLoader == null");
            return;
        }

        sortComponent.OnGUI();

        var root = GameObject.FindObjectOfType <ModelAssetLoader>();

        if (root)
        {
            var allCount = EditorHelper.GetVertexs(root.gameObject);
            GUILayout.Label("AllCount:" + allCount, EditorStyles.boldLabel);
        }

        var heightOffset = 100;

        scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.Width(position.width), GUILayout.Height(position.height - heightOffset));//开始滚动条

        GUI_InitTableComponent();

        var meshRenderers = GameObject.FindObjectsOfType <MeshRenderer>().ToList();

        meshRenderers.Sort(sortComponent.SortMethod);
        //模型按从位置进行排序
        for (int i = 0; i < meshRenderers.Count; i++)
        {
            EditorGUILayout.BeginHorizontal();
            GUILayout.Label(string.Format("{0:00}", i + 1), tableComponent.GetGUIWidth("ID"));
            MeshRenderer meshRenderer = meshRenderers[i];
            var          obj          = meshRenderer.gameObject;
            var          vertexCount  = EditorHelper.GetVertexs(obj);
            GUILayout.Label(vertexCount + "", tableComponent.GetGUIWidth("Count"));
            if (GUILayout.Button(obj.name, tableComponent.GetGUIWidth("Name")))
            {
                EditorHelper.SelectObject(obj);
            }

            GameObject simpleOjb = GetSimpleModel(obj);
            EditorGUILayout.ObjectField(simpleOjb, typeof(GameObject), false, tableComponent.GetGUIWidth("Simple"));

            var vertexCount2 = 0;
            if (simpleOjb != null)
            {
                vertexCount2 = EditorHelper.GetVertexs(simpleOjb);
                GUILayout.Label(vertexCount2 + "", tableComponent.GetGUIWidth("Count2"));
            }
            else
            {
                GUILayout.Label(vertexCount2 + "", tableComponent.GetGUIWidth("Count2"));
            }


            if (GUILayout.Button("CreatePrefab"))
            {
                CreatePrefab(obj, true, vertexCount <= vertexCount2);
            }
            //if (GUILayout.Button("Rename"))
            //{
            //    RenameAsset(obj);
            //}
            if (vertexCount > vertexCount2)
            {
                if (GUILayout.Button("ReplaceSimple"))
                {
                    ReplaceSimple(obj, simpleOjb);
                }
            }
            else
            {
                if (GUILayout.Button("------------"))
                {
                    //ReplaceSimple(obj, simpleOjb);
                }
            }

            //if (GUILayout.Button("ReplaceSimple"))
            //{
            //    //RenameAsset(obj);
            //}
            EditorGUILayout.EndHorizontal();
        }

        EditorGUILayout.EndScrollView();

        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("CreatePrefab"))
        {
            modelAssetLoader.modelList.Clear();
            for (int i = 0; i < meshRenderers.Count; i++)
            {
                MeshRenderer meshRenderer = meshRenderers[i];
                var          obj          = meshRenderer.gameObject;
                //CreatePrefab(obj,false);

                GameObject simpleOjb = GetSimpleModel(obj);
                if (simpleOjb != null)
                {
                    var vertexCount  = EditorHelper.GetVertexs(obj);
                    var vertexCount2 = EditorHelper.GetVertexs(simpleOjb);
                    if (vertexCount > vertexCount2)
                    {
                        //ReplaceSimple(obj, simpleOjb);
                        CreatePrefab(obj, false, false);//还没有替换简化模型
                    }
                    else
                    {
                        CreatePrefab(obj, false, true);//已经替换了建行模型
                    }
                }
                else
                {
                    CreatePrefab(obj, false, false);//不存在简化模型
                }
            }
        }
        if (GUILayout.Button("ReplaceSimple"))
        {
            for (int i = 0; i < meshRenderers.Count; i++)
            {
                MeshRenderer meshRenderer = meshRenderers[i];
                var          obj          = meshRenderer.gameObject;


                GameObject simpleOjb = GetSimpleModel(obj);
                if (simpleOjb != null)
                {
                    var vertexCount  = EditorHelper.GetVertexs(obj);
                    var vertexCount2 = EditorHelper.GetVertexs(simpleOjb);
                    if (vertexCount > vertexCount2)
                    {
                        ReplaceSimple(obj, simpleOjb);
                    }
                }
            }
        }
        if (GUILayout.Button("RenameModel"))
        {
            for (int i = 0; i < meshRenderers.Count; i++)
            {
                MeshRenderer meshRenderer = meshRenderers[i];
                var          obj          = meshRenderer.gameObject;
                RenameAsset(obj);
            }
        }
        if (GUILayout.Button("RenameSimple"))
        {
            string path  = "Assets/Models/SiHuiFactory/J1_Devices/简化模型";
            var    guids = AssetDatabase.FindAssets("t:model", new string[] { path });//再找模型
            foreach (var guid in guids)
            {
                var assetPath = AssetDatabase.GUIDToAssetPath(guid);
                //Debug.Log(assetPath);
                var obj = AssetDatabase.LoadAssetAtPath <GameObject>(assetPath);
                //主厂房设备简化1.FBX
                RenameAsset(obj);
            }
        }
        EditorGUILayout.EndHorizontal();
    }
예제 #2
0
 void Awake()
 {
     Instance = this;
 }