private void OnGUI() { GUI.enabled = !m_workingChange; GUILayout.BeginHorizontal(); GUILayout.BeginVertical(); m_scrollPos = GUILayout.BeginScrollView(m_scrollPos); for (int i = 0; i < m_ListMaterials.Count; i++) { m_ListMaterials[i] = EditorGUILayout.ObjectField(m_ListMaterials[i], typeof(Material), true) as Material; } GUILayout.EndScrollView(); if (GUILayout.Button("Select All Scene Target Legacy Material")) { FindShader(); m_ListMaterials.Clear(); List <GameObject> sceneList = new List <GameObject>(); foreach (GameObject go in Resources.FindObjectsOfTypeAll(typeof(GameObject)) as GameObject[]) { if (go.hideFlags == HideFlags.NotEditable || go.hideFlags == HideFlags.HideAndDontSave) { continue; } if (EditorUtility.IsPersistent(go.transform.root.gameObject)) { continue; } MeshRenderer meshRender = go.GetComponent <MeshRenderer>(); SkinnedMeshRenderer skinMeshRender = go.GetComponent <SkinnedMeshRenderer>(); if (meshRender == null && skinMeshRender == null) { continue; } Material[] mats = meshRender == null ? skinMeshRender.sharedMaterials : meshRender.sharedMaterials; foreach (Material mat in mats) { string matPath = AssetDatabase.GetAssetPath(mat); Material diskMaterial = AssetDatabase.LoadAssetAtPath <Material>(matPath); if (!m_ListMaterials.Contains(diskMaterial)) { bool needProcess = CheckLegacyShader(diskMaterial); if (!needProcess) { continue; } m_ListMaterials.Add(diskMaterial); } } } } if (GUILayout.Button("Upgrade To Standard Material")) { m_workIndex = 0; m_workingChange = true; m_intervalTime = intervalTime; } GUI.enabled = m_workingChange; if (GUILayout.Button("Stop Upgrade")) { m_workingChange = false; m_workIndex = 0; } GUILayout.EndVertical(); GUILayout.BeginVertical(); if (curEditor != null) { curEditor.DrawPreview(new Rect(20, 20, 64, 64)); curEditor.PropertiesGUI(); } GUILayout.EndVertical(); GUILayout.EndHorizontal(); }