Browse Source

路径选取

master
coffee 6 months ago
parent
commit
6d150933fd
  1. 68
      Assets/Unity-Tools/Core/Editor/DirectoryUtil.cs
  2. 3
      Assets/Unity-Tools/Core/Editor/DirectoryUtil.cs.meta
  3. 3
      Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.asset
  4. 4
      Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.cs

68
Assets/Unity-Tools/Core/Editor/DirectoryUtil.cs

@ -0,0 +1,68 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEngine;
namespace Tools.Editor
{
/// <summary>
/// 目录操作的工具类。
/// </summary>
public static class DirectoryUtil
{
/// <summary>
/// 确保指定的目录存在。如果不存在,则创建该目录。
/// </summary>
/// <param name="path">要检查或创建的目录路径。</param>
public static void MakeSureDirectory(string path)
{
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
}
/// <summary>
/// 获取 "Assets/" 文件夹中所有目录的文件路径,排除某些目录。
/// </summary>
/// <returns>文件路径的可枚举集合。</returns>
public static IEnumerable<string> GetFilePaths()
{
var dirs = Directory.GetDirectories("Assets/", "*", SearchOption.AllDirectories);
var filterList = dirs.Where(file =>
!file.Contains(".git") &&
!file.Contains("Plugins") &&
!file.Contains("Scenes")
).Select(file => file.Replace('\\', '/')).ToHashSet();
return filterList;
}
/// <summary>
/// 从指定路径中提取文件或目录的名称。
/// </summary>
/// <param name="path">要提取名称的路径。</param>
/// <returns>提取的名称。</returns>
public static string ExtractName(string path)
{
var startIndex1 = path.LastIndexOf("/", StringComparison.Ordinal) + 1;
var startIndex2 = path.LastIndexOf("\\", StringComparison.Ordinal) + 1;
var startIndex = Mathf.Max(startIndex1, startIndex2);
var endIndex = path.LastIndexOf(".", StringComparison.Ordinal);
return endIndex == -1 ? path[startIndex..] : path[startIndex..endIndex];
}
/// <summary>
/// 从指定路径中提取文件夹路径。
/// </summary>
/// <param name="path">要提取文件夹路径的路径。</param>
/// <returns>提取的文件夹路径。</returns>
public static string ExtractFolder(string path)
{
var endIndex1 = path.LastIndexOf("/", StringComparison.Ordinal);
var endIndex2 = path.LastIndexOf("\\", StringComparison.Ordinal);
var endIndex = Mathf.Max(endIndex1, endIndex2);
return path[..endIndex];
}
}
}

3
Assets/Unity-Tools/Core/Editor/DirectoryUtil.cs.meta

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: a9cf985844984893aa10d114d8710d0d
timeCreated: 1735748052

3
Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.asset

@ -12,4 +12,5 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 9247b1b02271436ca893eadb1fa8bdce, type: 3} m_Script: {fileID: 11500000, guid: 9247b1b02271436ca893eadb1fa8bdce, type: 3}
m_Name: ExcelResolverEditorConfig m_Name: ExcelResolverEditorConfig
m_EditorClassIdentifier: m_EditorClassIdentifier:
ExcelPath: ExcelPath: Assets/Unity-Tools/Core/ExcelResolver/Editor
JsonPath:

4
Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorConfig.cs

@ -4,9 +4,11 @@ using UnityEngine;
namespace Tools.ExcelResolver.Editor namespace Tools.ExcelResolver.Editor
{ {
[InlineEditor(InlineEditorObjectFieldModes.CompletelyHidden)] [InlineEditor(InlineEditorObjectFieldModes.CompletelyHidden)]
public class ExcelResolverEditorConfig : ScriptableObject public sealed class ExcelResolverEditorConfig : ScriptableObject
{ {
[ValueDropdown("@Tools.Editor.DirectoryUtil.GetFilePaths()")]
public string ExcelPath; public string ExcelPath;
[FolderPath]
public string JsonPath; public string JsonPath;
} }
} }
Loading…
Cancel
Save