112 lines
4.2 KiB
C#
112 lines
4.2 KiB
C#
|
/// <summary>
|
|||
|
/// 当前文件夹中所有需要导入的spine文件列表
|
|||
|
/// </summary>
|
|||
|
|
|||
|
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<string, FileSelectVal> fileSelectState = new Dictionary<string, FileSelectVal>(); // Dictionary<Spine名字,是否导入>
|
|||
|
public Dictionary<string, FileSelectVal> FileSelectState { get { return this.fileSelectState; } }
|
|||
|
private Dictionary<string, List<string>> fileDict = new Dictionary<string, List<string>>(); // Dictionary<Spine名字,List<相同Spine包含的文件>>
|
|||
|
public Dictionary<string, List<string>> FileDict { get { return this.fileDict; } }
|
|||
|
|
|||
|
public List<string> spinePrefabPathList = new List<string>();
|
|||
|
|
|||
|
#region 设置界面数据 同名(不包含后缀名)的文件只留一个
|
|||
|
/// <summary>
|
|||
|
/// 设置界面数据
|
|||
|
/// </summary>
|
|||
|
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<string>() { spineFiles[i] });
|
|||
|
} else
|
|||
|
{
|
|||
|
this.fileDict[fileName].Add(spineFiles[i]);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (spineFiles.Length <= 0)
|
|||
|
{
|
|||
|
EditorUtility.DisplayDialog("提 示", "选定的源文件夹中没有文件!", "确 定");
|
|||
|
}
|
|||
|
}
|
|||
|
else {
|
|||
|
EditorWindow.GetWindow<SelectFileWin>().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<SelectFileWin>().Close();
|
|||
|
}
|
|||
|
}
|
|||
|
#endregion
|
|||
|
}
|