Exemplo n.º 1
0
        void ConvertIt()
        {
            string[] files = null;
            if (configData.selectType == 0) {
                Debug.Log (configData.assetRoot + "是文件夹");
                files = Directory.GetFiles (configData.assetRoot, "*.fbx", SearchOption.AllDirectories);
            } else if (configData.selectType == 1) {
                Debug.Log (configData.pathSelect + "是文件夹");
                files = Directory.GetFiles (configData.pathSelect, "*.fbx", SearchOption.AllDirectories);
            } else if (configData.selectType == 2) {
                Debug.Log (configData.pathSelect + "是文件");
                files = new string[] { configData.pathSelect };
            }

            files = Array.ConvertAll<string, string> (files, new Converter<string, string> (getPath));
            Array.Sort<string> (files, new Comparison<string> ((s1, s2) => {
                return string.Compare (s1, s2);
            }));

            if (files != null) {
                // 以目录为单位进行pass
                Dictionary<string, List<string>> dictFiles = new Dictionary<string, List<string>> ();
                foreach (string file in files) {
                    string key = System.IO.Path.GetDirectoryName (file);
                    if (!dictFiles.ContainsKey (key)) {
                        dictFiles [key] = new List<string> ();
                    }
                    dictFiles [key].Add (file);
                }

                string targetFolder = TargetPath.GetHome() + "/.root";
                foreach (var pair in dictFiles) {
                    string targetDir = targetFolder + "/" + pair.Key;
                    if (!System.IO.Directory.Exists (targetDir)) {
                        System.IO.Directory.CreateDirectory (targetDir);
                    }

                    List<string> thisFiles = pair.Value;
                    foreach (string file in thisFiles) {
                        // 过滤
                        if (configData.filterType != 0) {
                            if (filter (file))
                                continue;
                        }

                        // todo:转换文件
                        UnityModelConvert.Convert (ArtWork.path + file, targetDir);
                    }
                }
                Debug.Log ("全部转换完毕");
                ConfigDataFile.Save (configData);
            }
        }
Exemplo n.º 2
0
        private void OnGUI()
        {
            if (textFieldStyles == null) {
                textFieldStyles = new GUIStyle (EditorStyles.popup);
                textFieldStyles.fontSize = 12;
            }
            if (configData == null) {
                configData = ConfigDataFile.Load ();
            }

            #region 界面布局
            EditorGUILayout.BeginVertical ();

            EditorGUILayout.Space ();
            EditorGUILayout.BeginHorizontal ();
            configData.assetRoot = EditorGUILayout.TextField ("资源根目录", configData.assetRoot);
            if (GUILayout.Button ("...", GUILayout.Width (25))) {
                string folder = EditorUtility.OpenFolderPanel ("选择源目录", string.Empty, string.Empty);
                if (folder != string.Empty) {
                    configData.assetRoot = folder;
                }
            }
            EditorGUILayout.EndHorizontal ();
            EditorGUILayout.Separator ();
            configData.selectType = EditorGUILayout.IntPopup ("导出方式", configData.selectType, selectTypeString, selectTypeIndex, textFieldStyles);
            if (configData.selectType != 0) {
                EditorGUILayout.BeginHorizontal ();
                configData.pathSelect = EditorGUILayout.TextField ("源文件", configData.pathSelect);
                if (GUILayout.Button ("...", GUILayout.Width (25))) {
                    if (configData.selectType == 1) {
                        string folder = EditorUtility.OpenFolderPanel ("选择源目录", configData.assetRoot, string.Empty);
                        if (folder != string.Empty) {
                            configData.pathSelect = folder;
                        }
                    } else if (configData.selectType == 2) {
                        string[] filter = { "原始模型", "fbx", "预置模型", "prefab", "材质文件", "mat", "All files", "*" };
                        string file = EditorUtility.OpenFilePanelWithFilters ("选择文件", configData.assetRoot, filter);
                        if (file != string.Empty) {
                            configData.pathSelect = file;
                        }
                    }
                }
                EditorGUILayout.EndHorizontal ();
            }

            EditorGUILayout.Separator ();
            configData.filterType = EditorGUILayout.IntPopup ("过滤方式", configData.filterType, filterTypeString, filterTypeIndex, textFieldStyles);
            if (configData.filterType != 0) {
                configData.regularExp = EditorGUILayout.Toggle ("使用正则表达式", configData.regularExp);
                configData.filter = EditorGUILayout.TextField ("过滤条件", configData.filter);
            }

            EditorGUILayout.Separator ();
            if (GUILayout.Button ("开始转换")) {
                if (configData.assetRoot == string.Empty) {
                    EditorUtility.DisplayDialog ("错误", "选择根文件夹", "准备好了告诉我");
                    return;
                }
                if ((configData.selectType > 0) && (configData.pathSelect == string.Empty)) {
                    EditorUtility.DisplayDialog ("错误", "选择需要导出的文件或者文件夹", "准备好了告诉我");
                    return;
                }
                ConvertIt ();
            }

            EditorGUILayout.EndVertical ();
            #endregion
        }