/// /// 当前文件夹中所有需要导入的spine文件列表 /// using UnityEngine; using UnityEditor; using System.IO; using System.Collections; using System.Collections.Generic; public class FileSelectVal { public bool stateVal; } public class SelectFileWin : EditorWindow { private Vector2 scrollViewPos = new Vector2(0,0); // 列表的位置 private Dictionary fileSelectState = new Dictionary(); // Dictionary public Dictionary FileSelectState { get { return this.fileSelectState; } } private Dictionary> fileDict = new Dictionary>(); // Dictionary> public Dictionary> FileDict { get { return this.fileDict; } } public List spinePrefabPathList = new List(); #region 设置界面数据 同名(不包含后缀名)的文件只留一个 /// /// 设置界面数据 /// public void SetSelectFileWinData(string _resources_folder_path) { fileSelectState.Clear(); fileDict.Clear(); if (Directory.Exists(_resources_folder_path)) { string[] spineFiles = Directory.GetFiles(_resources_folder_path); for (int i = 0; i < spineFiles.Length; i++) { FileInfo spineFilesInfo = new FileInfo(spineFiles[i]); string fileName = Path.GetFileNameWithoutExtension(spineFilesInfo.FullName); fileName = fileName.LastIndexOf(".") > 0 ? fileName.Substring(0, fileName.LastIndexOf(".")) : fileName; if (!this.fileSelectState.ContainsKey(fileName)) { FileSelectVal selectVal = new FileSelectVal(); selectVal.stateVal = false; this.fileSelectState.Add(fileName, selectVal); this.fileDict.Add(fileName, new List() { spineFiles[i] }); } else { this.fileDict[fileName].Add(spineFiles[i]); } } if (spineFiles.Length <= 0) { EditorUtility.DisplayDialog("提 示", "选定的源文件夹中没有文件!", "确 定"); } } else { EditorWindow.GetWindow().Close(); EditorUtility.DisplayDialog("提 示","请选择正确的源文件夹路径!","确 定"); } } #endregion #region OnGUI private void OnGUI() { EditorGUILayout.BeginVertical(); scrollViewPos = EditorGUILayout.BeginScrollView(scrollViewPos, false,false); IDictionaryEnumerator selectFolderDictEnum = this.fileSelectState.GetEnumerator(); while (selectFolderDictEnum.MoveNext()) { GUILayout.Space(10); FileSelectVal val = (FileSelectVal)selectFolderDictEnum.Value; bool stateVal = GUILayout.Toggle(val.stateVal, selectFolderDictEnum.Key.ToString()); val.stateVal = stateVal; } GUILayout.Space(10); GUILayout.BeginHorizontal(); IDictionaryEnumerator allFolderDictEnum = this.fileSelectState.GetEnumerator(); if (GUILayout.Button("全选")) { while (allFolderDictEnum.MoveNext()) { FileSelectVal val = (FileSelectVal)allFolderDictEnum.Value; val.stateVal = true; } } GUILayout.Space(10); if (GUILayout.Button("取消全选")) { while (allFolderDictEnum.MoveNext()) { FileSelectVal val = (FileSelectVal)allFolderDictEnum.Value; val.stateVal = false; } } GUILayout.EndHorizontal(); EditorGUILayout.EndScrollView(); EditorGUILayout.EndVertical(); GUILayout.Space(20); if (GUILayout.Button("确 定")) { EditorWindow.GetWindow().Close(); } } #endregion }