#if UNITY_EDITOR using UnityEngine; using UnityEditor; namespace DamageNumbersPro { [CustomEditor(typeof(DamageNumberSprite), true), CanEditMultipleObjects] public class DamageNumberSpriteEditor : Editor { public override void OnInspectorGUI() { base.OnInspectorGUI(); Color previousColor = GUI.color; GUIStyle descriptionTextStyle = new GUIStyle(GUI.skin.label); descriptionTextStyle.richText = true; descriptionTextStyle.wordWrap = true; descriptionTextStyle.stretchHeight = true; descriptionTextStyle.fixedHeight = 0; DamageNumberSprite targetSprite = (DamageNumberSprite)target; DamageNumber damageNumber = targetSprite.GetComponentInParent(); foreach (Object target in targets) { DamageNumberSprite dnpSprite = (DamageNumberSprite)target; // Preview size if (dnpSprite.matchTextSize) { SpriteRenderer spriteR = dnpSprite.GetComponent(); if (spriteR != null) { dnpSprite.UpdateSize(dnpSprite.GetComponentInParent(), spriteR); } RectTransform rectTransform = dnpSprite.GetComponent(); if (rectTransform != null) { dnpSprite.UpdateSize(dnpSprite.GetComponentInParent(), rectTransform); } } } // Check material SpriteRenderer spriteRenderer = targetSprite.GetComponent(); if (damageNumber.enable3DGame && spriteRenderer != null && (spriteRenderer.sharedMaterial == null || spriteRenderer.sharedMaterial.shader.name.EndsWith("Overlay") == false)) { GUI.color = new Color(1, 0.7f, 0.7f, 1); EditorGUILayout.Space(); EditorGUILayout.BeginVertical("Helpbox"); EditorGUILayout.LabelField("Use the Sprite Overlay material if you want your sprite renderer to render in front of other objects.", descriptionTextStyle); if(GUILayout.Button("Use Sprite Overlay Material")) { string[] guids = AssetDatabase.FindAssets($"t:Material DNP Sprite Overlay"); foreach (string guid in guids) { string path = AssetDatabase.GUIDToAssetPath(guid); Material mat = AssetDatabase.LoadAssetAtPath(path); Undo.RecordObject(spriteRenderer, "Changed sprite renderer's material."); spriteRenderer.sharedMaterial = mat; break; } } EditorGUILayout.EndVertical(); GUI.color = previousColor; } GUI.color = new Color(1f, 1f, 1f, 0.7f); EditorGUILayout.Space(); EditorGUILayout.BeginVertical("Helpbox"); EditorGUILayout.LabelField("You can attach this component to images and sprite renderes inside your damage number prefab. It will handle fading them in and out with the damage number.", descriptionTextStyle); EditorGUILayout.Space(); EditorGUILayout.LabelField("Match Text Size will resize the image or sprite renderer to match the text's size. For images it will always resize the rect transform. For sprite renderers it will either resize the transform or if possible the sprite's width and height.", descriptionTextStyle); EditorGUILayout.EndVertical(); GUI.color = previousColor; } } } #endif