[unity] Fixed InvalidCastException at version upgrade. Closes #2718.

This commit is contained in:
Harald Csaszar 2024-12-20 17:12:37 +01:00
parent aade5d6030
commit ee558554fb
2 changed files with 50 additions and 26 deletions

View File

@ -126,13 +126,16 @@ namespace Spine.Unity.Editor {
get {
if (serializedObject.isEditingMultipleObjects) {
foreach (UnityEngine.Object c in targets) {
SkeletonGraphic component = (SkeletonGraphic)c;
SkeletonGraphic component = c as SkeletonGraphic;
if (component == null) continue;
if (!component.IsValid)
return false;
}
return true;
} else {
SkeletonGraphic component = (SkeletonGraphic)target;
SkeletonGraphic component = target as SkeletonGraphic;
if (component == null)
return false;
return component.IsValid;
}
}
@ -230,7 +233,8 @@ namespace Spine.Unity.Editor {
protected virtual void DisableEditReferenceRectMode () {
foreach (UnityEngine.Object c in targets) {
SkeletonGraphic component = (SkeletonGraphic)c;
SkeletonGraphic component = c as SkeletonGraphic;
if (component == null) continue;
component.EditReferenceRect = false;
}
}
@ -279,8 +283,10 @@ namespace Spine.Unity.Editor {
EditorGUILayout.PropertyField(material);
if (GUILayout.Button("Detect", EditorStyles.miniButton, GUILayout.Width(67f))) {
Undo.RecordObjects(targets, "Detect Material");
foreach (UnityEngine.Object skeletonGraphic in targets) {
DetectMaterial((SkeletonGraphic)skeletonGraphic);
foreach (UnityEngine.Object target in targets) {
SkeletonGraphic skeletonGraphic = target as SkeletonGraphic;
if (skeletonGraphic == null) continue;
DetectMaterial(skeletonGraphic);
}
}
}
@ -321,8 +327,10 @@ namespace Spine.Unity.Editor {
EditorStyles.miniButton, GUILayout.Width(100f))) {
Undo.RecordObjects(targets, "Trim Renderers");
foreach (UnityEngine.Object skeletonGraphic in targets) {
((SkeletonGraphic)skeletonGraphic).TrimRenderers();
foreach (UnityEngine.Object target in targets) {
SkeletonGraphic skeletonGraphic = target as SkeletonGraphic;
if (skeletonGraphic == null) continue;
skeletonGraphic.TrimRenderers();
}
}
EditorGUILayout.EndHorizontal();
@ -337,8 +345,10 @@ namespace Spine.Unity.Editor {
EditorStyles.miniButton, GUILayout.Width(100f))) {
Undo.RecordObjects(targets, "Detect Blend Mode Materials");
foreach (UnityEngine.Object skeletonGraphic in targets) {
DetectBlendModeMaterials((SkeletonGraphic)skeletonGraphic);
foreach (UnityEngine.Object target in targets) {
SkeletonGraphic skeletonGraphic = target as SkeletonGraphic;
if (skeletonGraphic == null) continue;
DetectBlendModeMaterials(skeletonGraphic);
}
}
EditorGUILayout.EndHorizontal();
@ -445,8 +455,10 @@ namespace Spine.Unity.Editor {
EditorGUILayout.BeginHorizontal(GUILayout.Height(EditorGUIUtility.singleLineHeight + 5));
EditorGUILayout.PrefixLabel("Match RectTransform with Mesh");
if (GUILayout.Button("Match", EditorStyles.miniButton, GUILayout.Width(65f))) {
foreach (UnityEngine.Object skeletonGraphic in targets) {
MatchRectTransformWithBounds((SkeletonGraphic)skeletonGraphic);
foreach (UnityEngine.Object target in targets) {
SkeletonGraphic skeletonGraphic = target as SkeletonGraphic;
if (skeletonGraphic == null) continue;
MatchRectTransformWithBounds(skeletonGraphic);
}
}
EditorGUILayout.EndHorizontal();
@ -471,7 +483,8 @@ namespace Spine.Unity.Editor {
if (slotsReapplyRequired && UnityEngine.Event.current.type == EventType.Repaint) {
foreach (UnityEngine.Object target in targets) {
SkeletonGraphic skeletonGraphic = (SkeletonGraphic)target;
SkeletonGraphic skeletonGraphic = target as SkeletonGraphic;
if (skeletonGraphic == null) continue;
skeletonGraphic.ReapplySeparatorSlotNames();
skeletonGraphic.LateUpdate();
SceneView.RepaintAll();
@ -494,8 +507,10 @@ namespace Spine.Unity.Editor {
EditorGUILayout.PropertyField(tintBlack, TintBlackLabel);
if (GUILayout.Button("Detect", EditorStyles.miniButton, GUILayout.Width(65f))) {
Undo.RecordObjects(targets, "Detect Tint Black");
foreach (UnityEngine.Object skeletonGraphic in targets) {
DetectTintBlack((SkeletonGraphic)skeletonGraphic);
foreach (UnityEngine.Object target in targets) {
SkeletonGraphic skeletonGraphic = target as SkeletonGraphic;
if (skeletonGraphic == null) continue;
DetectTintBlack(skeletonGraphic);
}
}
}
@ -503,8 +518,10 @@ namespace Spine.Unity.Editor {
EditorGUILayout.PropertyField(canvasGroupCompatible, CanvasGroupCompatibleLabel);
if (GUILayout.Button("Detect", EditorStyles.miniButton, GUILayout.Width(65f))) {
Undo.RecordObjects(targets, "Detect CanvasGroup Compatible");
foreach (UnityEngine.Object skeletonGraphic in targets) {
DetectCanvasGroupCompatible((SkeletonGraphic)skeletonGraphic);
foreach (UnityEngine.Object target in targets) {
SkeletonGraphic skeletonGraphic = target as SkeletonGraphic;
if (skeletonGraphic == null) continue;
DetectCanvasGroupCompatible(skeletonGraphic);
}
}
}
@ -512,8 +529,10 @@ namespace Spine.Unity.Editor {
EditorGUILayout.PropertyField(pmaVertexColors, PMAVertexColorsLabel);
if (GUILayout.Button("Detect", EditorStyles.miniButton, GUILayout.Width(65f))) {
Undo.RecordObjects(targets, "Detect PMA Vertex Colors");
foreach (UnityEngine.Object skeletonGraphic in targets) {
DetectPMAVertexColors((SkeletonGraphic)skeletonGraphic);
foreach (UnityEngine.Object target in targets) {
SkeletonGraphic skeletonGraphic = target as SkeletonGraphic;
if (skeletonGraphic == null) continue;
DetectPMAVertexColors(skeletonGraphic);
}
}
}
@ -521,16 +540,20 @@ namespace Spine.Unity.Editor {
GUILayout.FlexibleSpace();
if (GUILayout.Button("Detect Settings", EditorStyles.miniButton, GUILayout.Width(100f))) {
Undo.RecordObjects(targets, "Detect Settings");
foreach (UnityEngine.Object skeletonGraphic in targets) {
DetectTintBlack((SkeletonGraphic)skeletonGraphic);
DetectCanvasGroupCompatible((SkeletonGraphic)skeletonGraphic);
DetectPMAVertexColors((SkeletonGraphic)skeletonGraphic);
foreach (UnityEngine.Object targets in targets) {
SkeletonGraphic skeletonGraphic = target as SkeletonGraphic;
if (skeletonGraphic == null) continue;
DetectTintBlack(skeletonGraphic);
DetectCanvasGroupCompatible(skeletonGraphic);
DetectPMAVertexColors(skeletonGraphic);
}
}
if (GUILayout.Button("Detect Material", EditorStyles.miniButton, GUILayout.Width(100f))) {
Undo.RecordObjects(targets, "Detect Material");
foreach (UnityEngine.Object skeletonGraphic in targets) {
DetectMaterial((SkeletonGraphic)skeletonGraphic);
foreach (UnityEngine.Object target in targets) {
SkeletonGraphic skeletonGraphic = target as SkeletonGraphic;
if (skeletonGraphic == null) continue;
DetectMaterial(skeletonGraphic);
}
}
}
@ -543,7 +566,8 @@ namespace Spine.Unity.Editor {
protected bool SkeletonHasMultipleSubmeshes () {
foreach (UnityEngine.Object target in targets) {
SkeletonGraphic skeletonGraphic = (SkeletonGraphic)target;
SkeletonGraphic skeletonGraphic = target as SkeletonGraphic;
if (skeletonGraphic == null) continue;
if (skeletonGraphic.HasMultipleSubmeshInstructions())
return true;
}

View File

@ -2,7 +2,7 @@
"name": "com.esotericsoftware.spine.spine-unity",
"displayName": "spine-unity Runtime",
"description": "This plugin provides the spine-unity runtime core.",
"version": "4.2.93",
"version": "4.2.94",
"unity": "2018.3",
"author": {
"name": "Esoteric Software",