Parcourir la source

[unity] Default z-spacing preferences.

pharan il y a 8 ans
Parent
commit
80c8b5bbc4

+ 34 - 24
spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs

@@ -153,6 +153,10 @@ namespace Spine.Unity.Editor {
 		const string DEFAULT_SHADER_KEY = "SPINE_DEFAULT_SHADER";
 		public static string defaultShader = DEFAULT_DEFAULT_SHADER;
 
+		const float DEFAULT_DEFAULT_ZSPACING = 0f;
+		const string DEFAULT_ZSPACING_KEY = "SPINE_DEFAULT_ZSPACING";
+		public static float defaultZSpacing = DEFAULT_DEFAULT_ZSPACING;
+
 		const bool DEFAULT_SHOW_HIERARCHY_ICONS = true;
 		const string SHOW_HIERARCHY_ICONS_KEY = "SPINE_SHOW_HIERARCHY_ICONS";
 		public static bool showHierarchyIcons = DEFAULT_SHOW_HIERARCHY_ICONS;
@@ -165,15 +169,18 @@ namespace Spine.Unity.Editor {
 			Initialize();
 		}
 
+		static void LoadPreferences () {
+			defaultMix = EditorPrefs.GetFloat(DEFAULT_MIX_KEY, DEFAULT_DEFAULT_MIX);
+			defaultScale = EditorPrefs.GetFloat(DEFAULT_SCALE_KEY, DEFAULT_DEFAULT_SCALE);
+			defaultZSpacing = EditorPrefs.GetFloat(DEFAULT_ZSPACING_KEY, DEFAULT_DEFAULT_ZSPACING);
+			defaultShader = EditorPrefs.GetString(DEFAULT_SHADER_KEY, DEFAULT_DEFAULT_SHADER);	
+			showHierarchyIcons = EditorPrefs.GetBool(SHOW_HIERARCHY_ICONS_KEY, DEFAULT_SHOW_HIERARCHY_ICONS);
+			SpineHandles.handleScale = EditorPrefs.GetFloat(SCENE_ICONS_SCALE_KEY, DEFAULT_SCENE_ICONS_SCALE);
+			preferencesLoaded = true;
+		}
+
 		static void Initialize () {
-			{
-				defaultMix = EditorPrefs.GetFloat(DEFAULT_MIX_KEY, DEFAULT_DEFAULT_MIX);
-				defaultScale = EditorPrefs.GetFloat(DEFAULT_SCALE_KEY, DEFAULT_DEFAULT_SCALE);
-				defaultShader = EditorPrefs.GetString(DEFAULT_SHADER_KEY, DEFAULT_DEFAULT_SHADER);	
-				showHierarchyIcons = EditorPrefs.GetBool(SHOW_HIERARCHY_ICONS_KEY, DEFAULT_SHOW_HIERARCHY_ICONS);
-				SpineHandles.handleScale = EditorPrefs.GetFloat(SCENE_ICONS_SCALE_KEY, DEFAULT_SCENE_ICONS_SCALE);
-				preferencesLoaded = true;
-			}
+			LoadPreferences();
 
 			DirectoryInfo rootDir = new DirectoryInfo(Application.dataPath);
 			FileInfo[] files = rootDir.GetFiles("SpineEditorUtilities.cs", SearchOption.AllDirectories);
@@ -214,14 +221,8 @@ namespace Spine.Unity.Editor {
 
 		[PreferenceItem("Spine")]
 		static void PreferencesGUI () {
-			if (!preferencesLoaded) {
-				defaultMix = EditorPrefs.GetFloat(DEFAULT_MIX_KEY, DEFAULT_DEFAULT_MIX);
-				defaultScale = EditorPrefs.GetFloat(DEFAULT_SCALE_KEY, DEFAULT_DEFAULT_SCALE);
-				defaultShader = EditorPrefs.GetString(DEFAULT_SHADER_KEY, DEFAULT_DEFAULT_SHADER);
-				showHierarchyIcons = EditorPrefs.GetBool(SHOW_HIERARCHY_ICONS_KEY, DEFAULT_SHOW_HIERARCHY_ICONS);
-				SpineHandles.handleScale = EditorPrefs.GetFloat(SCENE_ICONS_SCALE_KEY, DEFAULT_SCENE_ICONS_SCALE);
-				preferencesLoaded = true;
-			}
+			if (!preferencesLoaded)
+				LoadPreferences();
 
 			EditorGUI.BeginChangeCheck();
 			showHierarchyIcons = EditorGUILayout.Toggle(new GUIContent("Show Hierarchy Icons", "Show relevant icons on GameObjects with Spine Components on them. Disable this if you have large, complex scenes."), showHierarchyIcons);
@@ -244,18 +245,22 @@ namespace Spine.Unity.Editor {
 			if (EditorGUI.EndChangeCheck())
 				EditorPrefs.SetFloat(DEFAULT_SCALE_KEY, defaultScale);
 
-
 			EditorGUI.BeginChangeCheck();
-			#if UNITY_5_3_OR_NEWER
-			defaultShader = EditorGUILayout.DelayedTextField(new GUIContent("Default shader", "Default shader for materials auto-generated on import."), defaultShader); 
-			#else
-			defaultShader = EditorGUILayout.TextField(new GUIContent("Default shader", "Default shader for materials auto-generated on import."), defaultShader); 
-			#endif
+			var shader = (EditorGUILayout.ObjectField("Default Shader", Shader.Find(defaultShader), typeof(Shader), false) as Shader);
+			defaultShader = shader != null ? shader.name : DEFAULT_DEFAULT_SHADER;
 			if (EditorGUI.EndChangeCheck())
 				EditorPrefs.SetString(DEFAULT_SHADER_KEY, defaultShader);
+			EditorGUILayout.Space();
+
+			EditorGUILayout.LabelField("Editor Instantiation", EditorStyles.boldLabel);
+			EditorGUI.BeginChangeCheck();
+			defaultZSpacing = EditorGUILayout.Slider("Default Slot Z-Spacing", defaultZSpacing, -0.1f, 0f);
+			if (EditorGUI.EndChangeCheck())
+				EditorPrefs.SetFloat(DEFAULT_ZSPACING_KEY, defaultZSpacing);
+			
 
 			EditorGUILayout.Space();
-			EditorGUILayout.LabelField("Editor", EditorStyles.boldLabel);
+			EditorGUILayout.LabelField("Handles and Gizmos", EditorStyles.boldLabel);
 			EditorGUI.BeginChangeCheck();
 			SpineHandles.handleScale = EditorGUILayout.Slider("Editor Bone Scale", SpineHandles.handleScale, 0.01f, 2f);
 			SpineHandles.handleScale = Mathf.Max(0.01f, SpineHandles.handleScale);
@@ -268,7 +273,7 @@ namespace Spine.Unity.Editor {
 			GUILayout.Space(20);
 			EditorGUILayout.LabelField("3rd Party Settings", EditorStyles.boldLabel);
 			using (new GUILayout.HorizontalScope()) {
-				EditorGUILayout.PrefixLabel("TK2D");
+				EditorGUILayout.PrefixLabel("Define TK2D");
 				if (GUILayout.Button("Enable", GUILayout.Width(64)))
 					EnableTK2D();
 				if (GUILayout.Button("Disable", GUILayout.Width(64)))
@@ -1359,6 +1364,7 @@ namespace Spine.Unity.Editor {
 				throw e;
 			}
 
+			// Set Defaults
 			bool noSkins = data.DefaultSkin == null && (data.Skins == null || data.Skins.Count == 0); // Support attachmentless/skinless SkeletonData.
 			skin = skin ?? data.DefaultSkin ?? (noSkins ? null : data.Skins.Items[0]);
 			if (skin != null) {
@@ -1366,6 +1372,8 @@ namespace Spine.Unity.Editor {
 				newSkeletonAnimation.skeleton.SetSkin(skin);
 			}
 
+			newSkeletonAnimation.zSpacing = defaultZSpacing;
+
 			newSkeletonAnimation.skeleton.Update(0);
 			newSkeletonAnimation.state.Update(0);
 			newSkeletonAnimation.state.Apply(newSkeletonAnimation.skeleton);
@@ -1412,7 +1420,9 @@ namespace Spine.Unity.Editor {
 				data = skeletonDataAsset.GetSkeletonData(true);
 			}
 
+			// Set defaults
 			skin = skin ?? data.DefaultSkin ?? data.Skins.Items[0];
+			anim.zSpacing = defaultZSpacing;
 
 			anim.Initialize(false);
 			anim.skeleton.SetSkin(skin);

+ 2 - 5
spine-unity/Assets/spine-unity/Modules/SkeletonGraphic/Editor/SkeletonGraphicInspector.cs

@@ -194,11 +194,8 @@ namespace Spine.Unity.Editor {
 				data = skeletonDataAsset.GetSkeletonData(true);
 			}
 
-			if (skin == null)
-				skin = data.DefaultSkin;
-
-			if (skin == null)
-				skin = data.Skins.Items[0];
+			skin = skin ?? data.DefaultSkin ?? data.Skins.Items[0];
+			graphic.MeshGenerator.settings.zSpacing = SpineEditorUtilities.defaultZSpacing;
 
 			graphic.Initialize(false);
 			graphic.Skeleton.SetSkin(skin);