diff --git a/spine-unity/Assets/spine-unity/Asset Types/Editor/SkeletonDataAssetInspector.cs b/spine-unity/Assets/spine-unity/Asset Types/Editor/SkeletonDataAssetInspector.cs index c9fe59276..1d5857438 100644 --- a/spine-unity/Assets/spine-unity/Asset Types/Editor/SkeletonDataAssetInspector.cs +++ b/spine-unity/Assets/spine-unity/Asset Types/Editor/SkeletonDataAssetInspector.cs @@ -74,7 +74,8 @@ namespace Spine.Unity.Editor { SpineEditorUtilities.ConfirmInitialization(); m_skeletonDataAsset = (SkeletonDataAsset)target; - atlasAssets = serializedObject.FindProperty("atlasAssets"); + bool newAtlasAssets = atlasAssets == null; + if (newAtlasAssets) atlasAssets = serializedObject.FindProperty("atlasAssets"); skeletonJSON = serializedObject.FindProperty("skeletonJSON"); scale = serializedObject.FindProperty("scale"); fromAnimation = serializedObject.FindProperty("fromAnimation"); @@ -87,10 +88,10 @@ namespace Spine.Unity.Editor { #endif #if SPINE_TK2D - atlasAssets.isExpanded = false; + if (newAtlasAssets) atlasAssets.isExpanded = false; spriteCollection = serializedObject.FindProperty("spriteCollection"); #else - atlasAssets.isExpanded = true; + if (newAtlasAssets) atlasAssets.isExpanded = true; #endif m_skeletonDataAssetGUID = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(m_skeletonDataAsset)); @@ -470,44 +471,56 @@ namespace Spine.Unity.Editor { if (SpineEditorUtilities.IsSpineData((TextAsset)skeletonJSON.objectReferenceValue) == false) { warnings.Add("Skeleton data file is not a valid JSON or binary file."); } else { - #if !SPINE_TK2D - bool detectedNullAtlasEntry = false; - var atlasList = new List(); - var actualAtlasAssets = m_skeletonDataAsset.atlasAssets; - for (int i = 0; i < actualAtlasAssets.Length; i++) { - if (m_skeletonDataAsset.atlasAssets[i] == null) { - detectedNullAtlasEntry = true; - break; - } else { - atlasList.Add(actualAtlasAssets[i].GetAtlas()); - } - } + #if SPINE_TK2D + bool searchForSpineAtlasAssets = true; + bool isSpriteCollectionNull = spriteCollection.objectReferenceValue == null; + if (!isSpriteCollectionNull) searchForSpineAtlasAssets = false; + //else + // warnings.Add("Your sprite collection may have missing images."); + #else + const bool searchForSpineAtlasAssets = true; + #endif - if (detectedNullAtlasEntry) - warnings.Add("AtlasAsset elements should not be null."); - else { - // Get requirements. - var missingPaths = SpineEditorUtilities.GetRequiredAtlasRegions(AssetDatabase.GetAssetPath((TextAsset)skeletonJSON.objectReferenceValue)); + if (searchForSpineAtlasAssets) { + bool detectedNullAtlasEntry = false; + var atlasList = new List(); + var actualAtlasAssets = m_skeletonDataAsset.atlasAssets; - foreach (var atlas in atlasList) { - for (int i = 0; i < missingPaths.Count; i++) { - if (atlas.FindRegion(missingPaths[i]) != null) { - missingPaths.RemoveAt(i); - i--; - } + for (int i = 0; i < actualAtlasAssets.Length; i++) { + if (m_skeletonDataAsset.atlasAssets[i] == null) { + detectedNullAtlasEntry = true; + break; + } else { + atlasList.Add(actualAtlasAssets[i].GetAtlas()); } } - foreach (var str in missingPaths) - warnings.Add("Missing Region: '" + str + "'"); - + if (detectedNullAtlasEntry) { + warnings.Add("AtlasAsset elements should not be null."); + } else { + // Get requirements. + var missingPaths = SpineEditorUtilities.GetRequiredAtlasRegions(AssetDatabase.GetAssetPath((TextAsset)skeletonJSON.objectReferenceValue)); + + foreach (var atlas in atlasList) { + for (int i = 0; i < missingPaths.Count; i++) { + if (atlas.FindRegion(missingPaths[i]) != null) { + missingPaths.RemoveAt(i); + i--; + } + } + } + + #if SPINE_TK2D + if (missingPaths.Count > 0) + warnings.Add("Missing regions. SkeletonDataAsset requires tk2DSpriteCollectionData or Spine AtlasAssets."); + #endif + + foreach (var str in missingPaths) + warnings.Add("Missing Region: '" + str + "'"); + + } } - #else - if (spriteCollection.objectReferenceValue == null) - warnings.Add("SkeletonDataAsset requires tk2DSpriteCollectionData."); -// else -// warnings.Add("Your sprite collection may have missing images."); - #endif + } } } diff --git a/spine-unity/Assets/spine-unity/Mesh Generation/SpineMesh.cs b/spine-unity/Assets/spine-unity/Mesh Generation/SpineMesh.cs index d47526721..f910885af 100644 --- a/spine-unity/Assets/spine-unity/Mesh Generation/SpineMesh.cs +++ b/spine-unity/Assets/spine-unity/Mesh Generation/SpineMesh.cs @@ -357,7 +357,7 @@ namespace Spine.Unity { material = (Material)((AtlasRegion)rendererObject).page.rendererObject; } #else - Material material = (rendererObject.GetType() == typeof(Material)) ? (Material)rendererObject : (Material)((AtlasRegion)rendererObject).page.rendererObject; + Material material = (rendererObject is Material) ? (Material)rendererObject : (Material)((AtlasRegion)rendererObject).page.rendererObject; #endif if (current.forceSeparate || (current.rawVertexCount > 0 && !System.Object.ReferenceEquals(current.material, material))) { // Material changed. Add the previous submesh.