From 5d5473ee9f4ea96e74a8c00ba09c96cd25bdd308 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Thu, 14 Aug 2025 19:17:48 +0200 Subject: [PATCH] [unity] Fixed "Apply Additive Material" incorrectly set based on atlas workflow, added Spine Preferences setting instead. Closes #2908. --- .../Spine/Editor/spine-unity/Editor/Utility/AssetUtility.cs | 2 +- .../Spine/Editor/spine-unity/Editor/Utility/Preferences.cs | 5 +++++ .../Editor/spine-unity/Editor/Windows/SpinePreferences.cs | 6 +++++- spine-unity/Assets/Spine/package.json | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/AssetUtility.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/AssetUtility.cs index 841484b51..092f2a24c 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/AssetUtility.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/AssetUtility.cs @@ -1097,7 +1097,7 @@ namespace Spine.Unity.Editor { skeletonDataAsset.skeletonJSON = spineJson; skeletonDataAsset.defaultMix = SpineEditorUtilities.Preferences.defaultMix; skeletonDataAsset.scale = SpineEditorUtilities.Preferences.defaultScale; - skeletonDataAsset.blendModeMaterials.applyAdditiveMaterial = !SpineEditorUtilities.Preferences.UsesPMAWorkflow; + skeletonDataAsset.blendModeMaterials.applyAdditiveMaterial = SpineEditorUtilities.Preferences.applyAdditiveMaterial; } AssetDatabase.CreateAsset(skeletonDataAsset, filePath); } else { diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/Preferences.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/Preferences.cs index 482ecee94..ff9c6ede1 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/Preferences.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Utility/Preferences.cs @@ -140,12 +140,15 @@ namespace Spine.Unity.Editor { } } + const string APPLY_ADDITIVE_MATERIAL_KEY = "SPINE_APPLY_ADDITIVE_MATERIAL"; const string BLEND_MODE_MATERIAL_MULTIPLY_KEY = "SPINE_BLENDMODE_MATERIAL_MULTIPLY"; const string BLEND_MODE_MATERIAL_SCREEN_KEY = "SPINE_BLENDMODE_MATERIAL_SCREEN"; const string BLEND_MODE_MATERIAL_ADDITIVE_KEY = "SPINE_BLENDMODE_MATERIAL_ADDITIVE"; + public static bool applyAdditiveMaterial = false; public static string blendModeMaterialMultiply = ""; public static string blendModeMaterialScreen = ""; public static string blendModeMaterialAdditive = ""; + public const bool DEFAULT_APPLY_ADDITIVE_MATERIAL = SpinePreferences.DEFAULT_APPLY_ADDITIVE_MATERIAL; public const string DEFAULT_BLEND_MODE_MULTIPLY_MATERIAL = SpinePreferences.DEFAULT_BLEND_MODE_MULTIPLY_MATERIAL; public const string DEFAULT_BLEND_MODE_SCREEN_MATERIAL = SpinePreferences.DEFAULT_BLEND_MODE_SCREEN_MATERIAL; public const string DEFAULT_BLEND_MODE_ADDITIVE_MATERIAL = SpinePreferences.DEFAULT_BLEND_MODE_ADDITIVE_MATERIAL; @@ -207,6 +210,7 @@ namespace Spine.Unity.Editor { reloadAfterPlayMode = EditorPrefs.GetBool(RELOAD_AFTER_PLAYMODE_KEY, SpinePreferences.DEFAULT_RELOAD_AFTER_PLAYMODE); setTextureImporterSettings = EditorPrefs.GetBool(SET_TEXTUREIMPORTER_SETTINGS_KEY, SpinePreferences.DEFAULT_SET_TEXTUREIMPORTER_SETTINGS); textureSettingsReference = EditorPrefs.GetString(TEXTURE_SETTINGS_REFERENCE_KEY, SpinePreferences.DEFAULT_TEXTURE_SETTINGS_REFERENCE); + applyAdditiveMaterial = EditorPrefs.GetBool(APPLY_ADDITIVE_MATERIAL_KEY, SpinePreferences.DEFAULT_APPLY_ADDITIVE_MATERIAL); blendModeMaterialMultiply = EditorPrefs.GetString(BLEND_MODE_MATERIAL_MULTIPLY_KEY, ""); blendModeMaterialScreen = EditorPrefs.GetString(BLEND_MODE_MATERIAL_SCREEN_KEY, ""); blendModeMaterialAdditive = EditorPrefs.GetString(BLEND_MODE_MATERIAL_ADDITIVE_KEY, ""); @@ -313,6 +317,7 @@ namespace Spine.Unity.Editor { } } + SpineEditorUtilities.BoolPrefsField(ref applyAdditiveMaterial, APPLY_ADDITIVE_MATERIAL_KEY, new GUIContent("Apply Additive Material", "The Default Apply Additive Material setting for newly imported SkeletonDataAssets.")); SpineEditorUtilities.MaterialPrefsField(ref blendModeMaterialAdditive, BLEND_MODE_MATERIAL_ADDITIVE_KEY, new GUIContent("Additive Material", "Additive blend mode Material template.")); if (string.IsNullOrEmpty(blendModeMaterialAdditive)) { string[] blendModeMaterialAdditiveGUIDS = AssetDatabase.FindAssets(DEFAULT_BLEND_MODE_ADDITIVE_MATERIAL); diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Windows/SpinePreferences.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Windows/SpinePreferences.cs index 96e192a78..224fcc146 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Windows/SpinePreferences.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Windows/SpinePreferences.cs @@ -125,10 +125,12 @@ namespace Spine.Unity.Editor { return true; } + internal const bool DEFAULT_APPLY_ADDITIVE_MATERIAL = false; + public bool applyAdditiveMaterial = DEFAULT_APPLY_ADDITIVE_MATERIAL; + public const string DEFAULT_BLEND_MODE_MULTIPLY_MATERIAL = "SkeletonPMAMultiply"; public const string DEFAULT_BLEND_MODE_SCREEN_MATERIAL = "SkeletonPMAScreen"; public const string DEFAULT_BLEND_MODE_ADDITIVE_MATERIAL = "SkeletonPMAAdditive"; - public Material blendModeMaterialMultiply = null; public Material blendModeMaterialScreen = null; public Material blendModeMaterialAdditive = null; @@ -308,6 +310,8 @@ namespace Spine.Unity.Editor { SerializedProperty blendModeMaterialMultiply = settings.FindProperty("blendModeMaterialMultiply"); SerializedProperty blendModeMaterialScreen = settings.FindProperty("blendModeMaterialScreen"); bool isTexturePresetPMA = IsPMAWorkflow(textureSettingsRef.stringValue); + EditorGUILayout.PropertyField(settings.FindProperty("applyAdditiveMaterial"), + new GUIContent("Apply Additive Material", "The Default Apply Additive Material setting for newly imported SkeletonDataAssets.")); ShowBlendModeMaterialProperty(blendModeMaterialAdditive, "Additive", isTexturePresetPMA); ShowBlendModeMaterialProperty(blendModeMaterialMultiply, "Multiply", isTexturePresetPMA); ShowBlendModeMaterialProperty(blendModeMaterialScreen, "Screen", isTexturePresetPMA); diff --git a/spine-unity/Assets/Spine/package.json b/spine-unity/Assets/Spine/package.json index b903fcbd0..da31cdc1e 100644 --- a/spine-unity/Assets/Spine/package.json +++ b/spine-unity/Assets/Spine/package.json @@ -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.108", + "version": "4.2.109", "unity": "2018.3", "author": { "name": "Esoteric Software",