最近用到一个SVN功能:在本地一个文件夹路径下上传文件,本地其他多个路径下也可Update到前面上传的文件,由于路径不同手动打开多个文件夹更新比较麻烦,于是用Unity写了个一键更新的窗口工具。
以下是部分核心代码
窗口类:
string SvnFolderName = "/.svn"; // 用于检测文件夹是否受SVN控制
string lastSourceFolderPath = "";
static string listFileName = "svnData.txt";
static Vector2 defaultWindowSize = new Vector2(800,650);
static bool isClose = false;
public static List<FolderPath> sourceFolderList = new List<FolderPath>();
// 窗口菜单路径 %Q 表示快捷键Ctrl+Q打开
[UnityEditor.MenuItem("Window/SvnManager %Q")]
// 实例化窗口
static void Init()
{
var curWindow = (SvnEdittorWindow)EditorWindow.GetWindow(typeof(SvnEdittorWindow));
if (isClose) {
curWindow.Show();
curWindow.minSize = defaultWindowSize;
Reload();
}
else
{
curWindow.Close();
}
isClose = !isClose;
}
void OnGUI()
{
GUILayout.BeginVertical();
GUILayout.BeginHorizontal();
GUILayout.Label("源文件夹列表",EditorStyles.boldLabel);
if (GUILayout.Button("添加")) {
// 添加一行目录
AddFolderPath();
}
if (GUILayout.Button("Reload")) {
this.Reload();
}
if (GUILayout.Button("存储")) {
// 将List序列化为字符串存储为txt
string str = GameUtils.GetEntityToString(sourceFolderList.ToArray());
// 自定义类 主要调用的是IO中文件读写功能
FileUtils.WriteFile(UnityEngine.Application.dataPath,listFileName,str);
Debug.Log("数据存储成功!");
}
GUILayout.EndHorizontal();
GUILayout.BeginScrollView(Vector2.zero,GUILayout.Width(800),GUILayout.Height(600));
for (int i = 0; i < sourceFolderList.Count; i++) {
// 设置源文件夹路径
GUILayout.BeginHorizontal();
GUILayout.Label("源:");
sourceFolderList[i].sourcePath = EditorGUILayout.Te