LubanTools_Create.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using System.IO;
  2. using UnityEditor;
  3. using UnityEngine;
  4. namespace YIUI.Luban.Editor
  5. {
  6. public partial class LubanTools
  7. {
  8. public void CreateToPackage(string folderPath)
  9. {
  10. if (string.IsNullOrEmpty(folderPath)) return;
  11. if (!Directory.Exists(folderPath))
  12. {
  13. UnityTipsHelper.Show($"此文件夹不存在 无法创建: {folderPath}");
  14. return;
  15. }
  16. var createPackage = GetPackagesName(folderPath);
  17. if (string.IsNullOrEmpty(createPackage)) return;
  18. var sourceFolder = $"{LubanTemplate}/cn.etetet.yiui/Editor/Luban";
  19. var targetPackagePath = $"{PackagesPath}/{createPackage}/Luban/Config";
  20. if (!Directory.Exists($"{PackagesPath}/{createPackage}"))
  21. {
  22. UnityTipsHelper.ShowError($"目标包不存在 无法创建 \n{createPackage}");
  23. return;
  24. }
  25. if (!CopyFolder.Copy(sourceFolder, targetPackagePath)) return;
  26. CreateNullDirectory($"{targetPackagePath}/Datas");
  27. CreateNullDirectory($"{targetPackagePath}/Base/Defines");
  28. CloseWindowRefresh?.Invoke();
  29. UnityTipsHelper.Show($"{createPackage} Luban创建完毕");
  30. UnityTipsHelper.SelectLubanFolder(createPackage);
  31. }
  32. private void CreateNullDirectory(string path)
  33. {
  34. if (!Directory.Exists(path))
  35. {
  36. Directory.CreateDirectory(path);
  37. }
  38. }
  39. private static string GetPackagesName(string folderPath)
  40. {
  41. var basePath = $"{Application.dataPath.Replace("Assets", "Packages")}/";
  42. if (!folderPath.Contains(basePath))
  43. {
  44. UnityTipsHelper.Show($"不是Packages目录 无法创建: {folderPath}");
  45. return "";
  46. }
  47. var replacePath = folderPath.Replace(basePath, "");
  48. var splitValue = replacePath.Split("/");
  49. if (splitValue is { Length: >= 1 })
  50. {
  51. var packageName = splitValue[0];
  52. if (packageName.StartsWith("cn.etetet."))
  53. {
  54. return packageName;
  55. }
  56. }
  57. UnityTipsHelper.Show($"没有找到ET包 无法创建 {replacePath}");
  58. return "";
  59. }
  60. }
  61. }