private void OnDrawDLC()
        {
            // 列表显示
            EditorGUILayout.Space();
            EditorGUILayout.LabelField($"[ DLC ]");
            for (int i = 0; i < AssetBundleCollectorSettingData.Setting.DLCFiles.Count; i++)
            {
                string filePath = AssetBundleCollectorSettingData.Setting.DLCFiles[i];
                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField(filePath);
                    if (GUILayout.Button("-", GUILayout.MaxWidth(40)))
                    {
                        AssetBundleCollectorSettingData.RemoveDLC(filePath);
                        break;
                    }
                }
                EditorGUILayout.EndHorizontal();
            }

            // 添加按钮
            if (GUILayout.Button("+"))
            {
                string resultPath = EditorTools.OpenFilePath("Select File", "Assets/");
                if (resultPath != null)
                {
                    string filePath = EditorTools.AbsolutePathToAssetPath(resultPath);
                    AssetBundleCollectorSettingData.AddDLC(filePath);
                }
            }
        }
        private void OnGUI()
        {
            EditorGUILayout.Space();
            _saveFilePath     = EditorGUILayout.TextField("收集文件保存路径", _saveFilePath);
            _sceneGameObjects = (GameObject)EditorGUILayout.ObjectField("收集场景内置对象", _sceneGameObjects, typeof(UnityEngine.GameObject), false);

            int currentShaderCount  = ShaderVariantCollector.GetCurrentShaderVariantCollectionShaderCount();
            int currentVariantCount = ShaderVariantCollector.GetCurrentShaderVariantCollectionVariantCount();

            EditorGUILayout.LabelField($"CurrentShaderCount : {currentShaderCount}");
            EditorGUILayout.LabelField($"CurrentVariantCount : {currentVariantCount}");

            // 搜集变种
            EditorGUILayout.Space();
            if (GUILayout.Button("搜集变种", GUILayout.MaxWidth(80)))
            {
                ShaderVariantCollector.Run(_saveFilePath, _sceneGameObjects);
            }

            // 查询
            EditorGUILayout.Space();
            if (GUILayout.Button("查询", GUILayout.MaxWidth(80)))
            {
                string resultPath = EditorTools.OpenFilePath("Select File", "Assets/", "shadervariants");
                if (string.IsNullOrEmpty(resultPath))
                {
                    return;
                }
                string assetPath = EditorTools.AbsolutePathToAssetPath(resultPath);
                _selectSVC = AssetDatabase.LoadAssetAtPath <ShaderVariantCollection>(assetPath);
            }
            if (_selectSVC != null)
            {
                EditorGUILayout.LabelField($"ShaderCount : {_selectSVC.shaderCount}");
                EditorGUILayout.LabelField($"VariantCount : {_selectSVC.variantCount}");
            }
        }
Пример #3
0
        private void OnDrawCollector()
        {
            // 着色器选项
            EditorGUILayout.Space();
            bool isCollectAllShader = EditorGUILayout.Toggle("收集所有着色器", AssetBundleCollectorSettingData.Setting.IsCollectAllShaders);

            if (isCollectAllShader != AssetBundleCollectorSettingData.Setting.IsCollectAllShaders)
            {
                AssetBundleCollectorSettingData.ModifyShader(isCollectAllShader, AssetBundleCollectorSettingData.Setting.ShadersBundleName);
            }
            if (isCollectAllShader)
            {
                string shadersBundleName = EditorGUILayout.TextField("AssetBundle名称", AssetBundleCollectorSettingData.Setting.ShadersBundleName);
                if (shadersBundleName != AssetBundleCollectorSettingData.Setting.ShadersBundleName)
                {
                    AssetBundleCollectorSettingData.ModifyShader(isCollectAllShader, shadersBundleName);
                }
            }

            // 列表显示
            EditorGUILayout.Space();
            EditorGUILayout.LabelField($"[ Collector ]");
            _scrollPos = EditorGUILayout.BeginScrollView(_scrollPos);
            for (int i = 0; i < AssetBundleCollectorSettingData.Setting.Collectors.Count; i++)
            {
                var    collector           = AssetBundleCollectorSettingData.Setting.Collectors[i];
                string directory           = collector.CollectDirectory;
                string packRuleClassName   = collector.PackRuleClassName;
                string filterRuleClassName = collector.FilterRuleClassName;

                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField(directory);

                    // IPackRule
                    {
                        int index    = PackRuleClassNameToIndex(packRuleClassName);
                        int newIndex = EditorGUILayout.Popup(index, _packRuleClassArray, GUILayout.MaxWidth(200));
                        if (newIndex != index)
                        {
                            packRuleClassName = IndexToPackRuleClassName(newIndex);
                            AssetBundleCollectorSettingData.ModifyCollector(directory, packRuleClassName, filterRuleClassName);
                        }
                    }

                    // IFilterRule
                    {
                        int index    = FilterRuleClassNameToIndex(filterRuleClassName);
                        int newIndex = EditorGUILayout.Popup(index, _filterRuleClassArray, GUILayout.MaxWidth(150));
                        if (newIndex != index)
                        {
                            filterRuleClassName = IndexToFilterRuleClassName(newIndex);
                            AssetBundleCollectorSettingData.ModifyCollector(directory, packRuleClassName, filterRuleClassName);
                        }
                    }

                    if (GUILayout.Button("-", GUILayout.MaxWidth(40)))
                    {
                        AssetBundleCollectorSettingData.RemoveCollector(directory);
                        break;
                    }
                }
                EditorGUILayout.EndHorizontal();
            }
            EditorGUILayout.EndScrollView();

            // 添加按钮
            if (GUILayout.Button("+"))
            {
                string resultPath = EditorTools.OpenFolderPanel("Select Folder", _lastOpenFolderPath);
                if (resultPath != null)
                {
                    _lastOpenFolderPath = EditorTools.AbsolutePathToAssetPath(resultPath);
                    string defaultPackRuleClassName   = nameof(PackExplicit);
                    string defaultFilterRuleClassName = nameof(CollectAll);
                    AssetBundleCollectorSettingData.AddCollector(_lastOpenFolderPath, defaultPackRuleClassName, defaultFilterRuleClassName);
                }
            }

            // 导入配置按钮
            if (GUILayout.Button("Import Config"))
            {
                string resultPath = EditorTools.OpenFilePath("Select Folder", _lastOpenFolderPath);
                if (resultPath != null)
                {
                    CollectorConfigImporter.ImportXmlConfig(resultPath);
                }
            }
        }
Пример #4
0
        private void OnDrawCollector()
        {
            // 列表显示
            EditorGUILayout.Space();
            _scrollPos = EditorGUILayout.BeginScrollView(_scrollPos);
            for (int i = 0; i < AssetBundleCollectorSettingData.Setting.Collectors.Count; i++)
            {
                var    collector          = AssetBundleCollectorSettingData.Setting.Collectors[i];
                string directory          = collector.CollectDirectory;
                string packRuleName       = collector.PackRuleName;
                string filterRuleName     = collector.FilterRuleName;
                bool   dontWriteAssetPath = collector.DontWriteAssetPath;
                string assetTags          = collector.AssetTags;

                EditorGUILayout.BeginHorizontal();
                {
                    // Directory
                    EditorGUILayout.LabelField(directory, GUILayout.MinWidth(GuiDirecotryMinSize), GUILayout.MaxWidth(GuiDirecotryMaxSize));

                    // IPackRule
                    {
                        int index    = PackRuleNameToIndex(packRuleName);
                        int newIndex = EditorGUILayout.Popup(index, _packRuleArray, GUILayout.MinWidth(GuiPackRuleSize), GUILayout.MaxWidth(GuiPackRuleSize));
                        if (newIndex != index)
                        {
                            packRuleName = IndexToPackRuleName(newIndex);
                            AssetBundleCollectorSettingData.ModifyCollector(directory, packRuleName, filterRuleName, dontWriteAssetPath, assetTags);
                        }
                    }

                    // IFilterRule
                    {
                        int index    = FilterRuleNameToIndex(filterRuleName);
                        int newIndex = EditorGUILayout.Popup(index, _filterRuleArray, GUILayout.MinWidth(GuiFilterRuleSize), GUILayout.MaxWidth(GuiFilterRuleSize));
                        if (newIndex != index)
                        {
                            filterRuleName = IndexToFilterRuleName(newIndex);
                            AssetBundleCollectorSettingData.ModifyCollector(directory, packRuleName, filterRuleName, dontWriteAssetPath, assetTags);
                        }
                    }

                    // DontWriteAssetPath
                    {
                        bool newToggleValue = EditorGUILayout.Toggle(dontWriteAssetPath, GUILayout.MinWidth(GuiDontWriteAssetPathSize), GUILayout.MaxWidth(GuiDontWriteAssetPathSize));
                        if (newToggleValue != dontWriteAssetPath)
                        {
                            dontWriteAssetPath = newToggleValue;
                            AssetBundleCollectorSettingData.ModifyCollector(directory, packRuleName, filterRuleName, dontWriteAssetPath, assetTags);
                        }
                    }

                    // AssetTags
                    {
                        string newTextValue = EditorGUILayout.TextField(assetTags, GUILayout.MinWidth(GuiAssetTagsMinSize), GUILayout.MaxWidth(GuiAssetTagsMaxSize));
                        if (newTextValue != assetTags)
                        {
                            assetTags = newTextValue;
                            AssetBundleCollectorSettingData.ModifyCollector(directory, packRuleName, filterRuleName, dontWriteAssetPath, assetTags);
                        }
                    }

                    if (GUILayout.Button("-", GUILayout.MinWidth(GuiBtnSize), GUILayout.MaxWidth(GuiBtnSize)))
                    {
                        AssetBundleCollectorSettingData.RemoveCollector(directory);
                        break;
                    }
                }
                EditorGUILayout.EndHorizontal();
            }
            EditorGUILayout.EndScrollView();

            // 添加按钮
            if (GUILayout.Button("+"))
            {
                string resultPath = EditorTools.OpenFolderPanel("Select Folder", _lastOpenFolderPath);
                if (resultPath != null)
                {
                    _lastOpenFolderPath = EditorTools.AbsolutePathToAssetPath(resultPath);
                    string defaultPackRuleName            = nameof(PackExplicit);
                    string defaultFilterRuleName          = nameof(CollectAll);
                    bool   defaultDontWriteAssetPathValue = false;
                    string defaultAssetTag = string.Empty;
                    AssetBundleCollectorSettingData.AddCollector(_lastOpenFolderPath, defaultPackRuleName, defaultFilterRuleName, defaultDontWriteAssetPathValue, defaultAssetTag);
                }
            }

            // 导入配置按钮
            if (GUILayout.Button("Import Config"))
            {
                string resultPath = EditorTools.OpenFilePath("Select File", "Assets/", "xml");
                if (resultPath != null)
                {
                    CollectorConfigImporter.ImportXmlConfig(resultPath);
                }
            }
        }