using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEditor;
|
using vnxbqy.UI;
|
using UnityEngine.UI;
|
|
[CustomEditor(typeof(TextUpdate))]
|
public class LabelTextColorTool : Editor
|
{
|
[SerializeField] TextUpdate m_Target;
|
|
[SerializeField] List<Text> allTexts = new List<Text>();
|
|
[SerializeField] GUIStyle m_LabelStyle;
|
|
[SerializeField] bool m_ShowTextColor;
|
|
[SerializeField] Color m_LabelColor=Color.black;
|
[SerializeField] int m_LabelSize = 12;
|
[SerializeField] Vector3 m_Offset = Vector3.zero;
|
[SerializeField] bool m_HexColor = false;
|
[SerializeField] Color32 m_UnShowColor = Color.white;
|
|
void FindAllText()
|
{
|
allTexts.Clear();
|
FindChildText(m_Target.transform, ref allTexts);
|
}
|
|
private void OnEnable()
|
{
|
m_LabelStyle = new GUIStyle();
|
m_LabelStyle.fontSize = 12;
|
m_LabelStyle.normal.textColor = Color.green;
|
}
|
|
void FindChildText(Transform _transform, ref List<Text> _allTexts)
|
{
|
if (_transform != null)
|
{
|
var text = _transform.GetComponent<Text>();
|
if (text != null)
|
{
|
_allTexts.Add(text);
|
}
|
|
for (int i = 0; i < _transform.childCount; i++)
|
{
|
FindChildText(_transform.GetChild(i), ref _allTexts);
|
}
|
|
}
|
}
|
|
public override void OnInspectorGUI()
|
{
|
base.OnInspectorGUI();
|
m_Target = target as TextUpdate;
|
GUILayout.Space(20);
|
if (GUILayout.Button("显示字色"))
|
{
|
if (m_Target != null)
|
{
|
FindAllText();
|
}
|
}
|
m_LabelColor = EditorGUILayout.ColorField("字色", m_LabelColor);
|
m_UnShowColor = EditorGUILayout.ColorField("屏蔽字色", m_UnShowColor);
|
m_LabelSize = EditorGUILayout.IntField("字体大小", m_LabelSize);
|
m_Offset = EditorGUILayout.Vector3Field("偏移", m_Offset);
|
m_HexColor = EditorGUILayout.Toggle("16进制", m_HexColor);
|
}
|
|
private void OnSceneGUI()
|
{
|
for (int i = 0; i < allTexts.Count; i++)
|
{
|
if (allTexts[i] == null)
|
{
|
allTexts.RemoveAt(i);
|
i--;
|
continue;
|
}
|
var _pos = allTexts[i].rectTransform.position;
|
Color32 m_Color = allTexts[i].color;
|
if (m_UnShowColor.Equals(m_Color))
|
{
|
continue;
|
}
|
if (m_ShowTextColor)
|
{
|
allTexts[i].gameObject.SetActive(false);
|
}
|
else
|
{
|
allTexts[i].gameObject.SetActive(true);
|
}
|
m_LabelStyle.normal.textColor = m_LabelColor;
|
m_LabelStyle.fontSize = m_LabelSize;
|
_pos += m_Offset;
|
Handles.Label(_pos,m_HexColor? GetHexColor(m_Color): m_Color.ToString(), m_LabelStyle);
|
HandleUtility.Repaint();
|
}
|
}
|
|
public string GetHexColor(Color32 _color)
|
{
|
return StringUtility.Contact(_color.r.ToString("X2"),
|
_color.g.ToString("X2"),
|
_color.b.ToString("X2"),
|
_color.a.ToString("X2"));
|
}
|
}
|