diff --git a/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceChecker/Checkers/MainCheckers/BFSpineChecker.cs b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceChecker/Checkers/MainCheckers/BFSpineChecker.cs new file mode 100644 index 000000000..d0acd7d13 --- /dev/null +++ b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceChecker/Checkers/MainCheckers/BFSpineChecker.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace BFEditor.Resource +{ + public class BFSpineChecker : BFMainChecker + { + protected override GUIContent InitGUIContent() + { + return new GUIContent("spine", BFEditorUtils.GetSystemIcon(typeof(Spine.Unity.SkeletonDataAsset))); + } + + protected override List InitSubCheckers() + { + return new List() + { + new SpineSubChecker(), + }; + } + } +} diff --git a/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceChecker/Checkers/MainCheckers/BFSpineChecker.cs.meta b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceChecker/Checkers/MainCheckers/BFSpineChecker.cs.meta new file mode 100644 index 000000000..322a07a75 --- /dev/null +++ b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceChecker/Checkers/MainCheckers/BFSpineChecker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e9c0f8968ad84174b9bc2d446ec36e7b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceChecker/Checkers/SubCheckers/Spine.meta b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceChecker/Checkers/SubCheckers/Spine.meta new file mode 100644 index 000000000..4a5fd70fc --- /dev/null +++ b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceChecker/Checkers/SubCheckers/Spine.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e339cd1033ed11b4f9e49a9760fef963 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceChecker/Checkers/SubCheckers/Spine/SpineSubChecker.cs b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceChecker/Checkers/SubCheckers/Spine/SpineSubChecker.cs new file mode 100644 index 000000000..b098feb95 --- /dev/null +++ b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceChecker/Checkers/SubCheckers/Spine/SpineSubChecker.cs @@ -0,0 +1,71 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using System.IO; + +namespace BFEditor.Resource +{ + public class SpineSubChecker : BFSubChecker + { + Dictionary mustNeedAni = new Dictionary(){ + {"born", true}, + {"death", true}, + {"idle", true}, + {"suffer", true}, + {"vertigo", true}, + {"frozen", true}, + // {"attack", true}, + }; + public override string InitName() + { + return "Spine"; + } + + public override bool DoCheck(string assetPath, AssetImporter assetImporter, Object assetObj) + { + bool passed = true; + if (assetPath.Contains("characters")) + { + var skeletonDataAsset = AssetDatabase.LoadAssetAtPath(assetPath); + var animationState = skeletonDataAsset.GetAnimationStateData(); + Dictionary haveAni = new Dictionary(); + foreach (var animation in animationState.SkeletonData.Animations) + { + haveAni[animation.Name] = true; + } + foreach (var key in mustNeedAni.Keys) + { + if (!haveAni.ContainsKey(key)) + { + currentBadRes.AddBadLog("没有动画" + key); + passed = false; + } + } + } + + string floderPath = Path.GetDirectoryName(assetPath); + string[] paths = Directory.GetFiles(floderPath); + int fileCount = 0; + foreach (string unitPath in paths) + { + if (Path.GetExtension(unitPath) != ".meta") + { + fileCount++; + } + } + if (fileCount > 6) // 只能有六个文件 + { + currentBadRes.AddBadLog("文件夹文件数量异常"); + passed = false; + } + + return passed; + } + + protected override List GetAssetPathList() + { + return BFEditorUtils.GetAssetPathsWithSuffix(ResourceProcessConfig.SPINE_TEXTURE_PATH, ".asset", "skeletondata"); + } + } +} diff --git a/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceChecker/Checkers/SubCheckers/Spine/SpineSubChecker.cs.meta b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceChecker/Checkers/SubCheckers/Spine/SpineSubChecker.cs.meta new file mode 100644 index 000000000..e497e8b19 --- /dev/null +++ b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceChecker/Checkers/SubCheckers/Spine/SpineSubChecker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 45556e9bea3af1b4b96c6e7a1fec9552 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceImporter/Importers/MainImporters/BFSpineImporter.cs b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceImporter/Importers/MainImporters/BFSpineImporter.cs new file mode 100644 index 000000000..6e286e236 --- /dev/null +++ b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceImporter/Importers/MainImporters/BFSpineImporter.cs @@ -0,0 +1,25 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using System.IO; + +namespace BFEditor.Resource +{ + public class BFSpineImporter : BFMainImporter + { + protected override List InitSubImporters() + { + return new List() + { + new BFSpineSubImporter(), + }; + } + + public override bool NeedDeal(string assetPath) + { + var suffix = Path.GetExtension(assetPath); + return suffix == ".asset"; + } + } +} diff --git a/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceImporter/Importers/MainImporters/BFSpineImporter.cs.meta b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceImporter/Importers/MainImporters/BFSpineImporter.cs.meta new file mode 100644 index 000000000..85f5dee14 --- /dev/null +++ b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceImporter/Importers/MainImporters/BFSpineImporter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aec487ce03f96b141b9363cbb898e894 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceImporter/Importers/SubImporters/Spine.meta b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceImporter/Importers/SubImporters/Spine.meta new file mode 100644 index 000000000..4480dbf19 --- /dev/null +++ b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceImporter/Importers/SubImporters/Spine.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f5bc4bc411f27624fa3eb792290cbd09 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceImporter/Importers/SubImporters/Spine/BFSpineSubImporter.cs b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceImporter/Importers/SubImporters/Spine/BFSpineSubImporter.cs new file mode 100644 index 000000000..b3565738c --- /dev/null +++ b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceImporter/Importers/SubImporters/Spine/BFSpineSubImporter.cs @@ -0,0 +1,21 @@ +using System.IO; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + +namespace BFEditor.Resource +{ + public class BFSpineSubImporter : BFSubImporter + { + public override bool NeedDeal(string assetPath) + { + return assetPath.Contains(ResourceProcessConfig.SPINE_TEXTURE_PATH); + } + + protected override void DoImport(string assetPath, AssetImporter assetImporter, bool isFix) + { + + } + } +} diff --git a/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceImporter/Importers/SubImporters/Spine/BFSpineSubImporter.cs.meta b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceImporter/Importers/SubImporters/Spine/BFSpineSubImporter.cs.meta new file mode 100644 index 000000000..f194c3c37 --- /dev/null +++ b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceImporter/Importers/SubImporters/Spine/BFSpineSubImporter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95690334d8b9a8b4b82d428441cc2095 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceProcessConfig/ResourceProcessConfig.cs b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceProcessConfig/ResourceProcessConfig.cs index 09ed4fe8b..2c8fb927a 100644 --- a/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceProcessConfig/ResourceProcessConfig.cs +++ b/Assets/Editor/BFResourceTools/ResourceProcessTools/ResourceProcessConfig/ResourceProcessConfig.cs @@ -133,6 +133,7 @@ namespace BFEditor.Resource new BFPrefabImporter(), new BFMaterialImporter(), new BFShaderImporter(), + new BFSpineImporter(), }; //资源白名单 检查时过滤 @@ -201,6 +202,7 @@ namespace BFEditor.Resource new BFAudioChecker(), new BFMaterialChecker(), new BFShaderChecker(), + new BFSpineChecker(), }; return result; } diff --git a/Assets/Editor/Utils/BFEditorUtils.cs b/Assets/Editor/Utils/BFEditorUtils.cs index ff6be372b..9b7223875 100644 --- a/Assets/Editor/Utils/BFEditorUtils.cs +++ b/Assets/Editor/Utils/BFEditorUtils.cs @@ -285,7 +285,7 @@ namespace BFEditor return string.Format("{0}分{1}秒", minus, second); } - public static List GetAssetPathsWithSuffix(string path, string suffix) + public static List GetAssetPathsWithSuffix(string path, string suffix, string containsStr = "") { var result = new List(); var fileInfos = new List(); @@ -295,7 +295,17 @@ namespace BFEditor { var resourcePath = "Assets" + fileInfos[i].FullName.Replace("\\", "/").Remove(0, Application.dataPath.Length); resourcePath = resourcePath.Replace('\\', '/'); - result.Add(resourcePath); + if (containsStr == "") + { + result.Add(resourcePath); + } + else + { + if (fileInfos[i].FullName.Contains(containsStr)) + { + result.Add(resourcePath); + } + } } return result;