private void OnDestroy() { foreach (var item in ViewerMap) { item.Value.Clear(); } m_CurrentShader = null; m_APIType = EAPIType.OpenGLES; m_SkipUnused = false; m_AnalyzedData = null; m_GPUVendors = null; m_Vendors = null; m_ModelNames = null; m_VendorsSelected = 0; m_GPUModelsSelected = 0; m_CurrentVendor = null; m_ScrollPosition = Vector2.zero; m_SettingsFolderOpen = true; m_AnalyzedDataDrawType = EAnalyzedDataViewType.Hierarchy; }
private void OnGUI() { m_ScrollPosition = GUILayout.BeginScrollView(m_ScrollPosition, false, true); m_SettingsFolderOpen = GUITools.DrawHeader("设置", false, m_SettingsFolderOpen, true); if (m_SettingsFolderOpen) { GUITools.BeginContents(GUITools.Styles.WizardBoxStyle); EditorGUI.BeginDisabledGroup(ShaderAnalyzer.Instance.CurrentStageType != EAnalyzeStageType.None); m_CurrentShader = EditorGUILayout.ObjectField(new GUIContent("Shader"), m_CurrentShader, typeof(Shader), false) as Shader; m_SkipUnused = EditorGUILayout.Toggle(new GUIContent("是否跳过当前场景未使用的变体", ""), m_SkipUnused); EditorGUI.BeginChangeCheck(); m_APIType = (EAPIType)EditorGUILayout.EnumPopup(new GUIContent("要编译的着色器语言类型"), m_APIType, (Enum index) => { bool show = true; switch ((EAPIType)index) { case EAPIType.None: case EAPIType.All: case EAPIType.Vulkan: show = false; break; } return(show); }, false ); if (EditorGUI.EndChangeCheck()) { initVendors(); } EditorGUI.BeginChangeCheck(); m_VendorsSelected = EditorGUILayout.Popup(new GUIContent("GPU厂商"), m_VendorsSelected, m_Vendors); if (EditorGUI.EndChangeCheck()) { initVendor(); } m_GPUModelsSelected = EditorGUILayout.Popup(new GUIContent("目标GPU模型"), m_GPUModelsSelected, m_ModelNames); EditorGUI.BeginDisabledGroup(m_CurrentShader == null); if (GUILayout.Button("解析")) { if (m_CurrentVendor.VendorType == EGPUVendorType.Mali) { if (string.IsNullOrEmpty(Settings.MaliOfflineCompilePath)) { Debug.LogError("请设置Mali离线编译器路径!"); return; } } ShaderAnalyzer.Instance.Analyze(this.getAnalyzeParams(), analyzeCallback); GUITools.ClearContentDepth(); GUIUtility.ExitGUI(); } EditorGUI.EndDisabledGroup(); EditorGUI.EndDisabledGroup(); GUITools.EndContents(); } if (m_AnalyzedData != null) { EditorGUILayout.Space(); EditorGUI.BeginChangeCheck(); m_AnalyzedDataDrawType = (EAnalyzedDataViewType)EditorGUILayout.EnumPopup(m_AnalyzedDataDrawType); if (EditorGUI.EndChangeCheck()) { ViewerMap[m_AnalyzedDataDrawType].Init(m_AnalyzedData); } EditorGUILayout.LabelField("解析数据"); GUITools.BeginContents(GUITools.Styles.WizardBoxStyle); EditorGUILayout.BeginVertical(); EditorGUILayout.LabelField("GPU信息 : ", m_AnalyzedData.GPUModelInfo.ModelName); EditorGUILayout.LabelField("硬件信息 : ", m_AnalyzedData.Hardware); EditorGUILayout.LabelField("驱动信息 : ", m_AnalyzedData.Driver); EditorGUILayout.EndVertical(); GUITools.EndContents(); ViewerMap[m_AnalyzedDataDrawType].Draw(); } GUILayout.EndScrollView(); }