少年修仙传客户端代码仓库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
 
public class TextUpdate : MonoBehaviour
{
 
    List<Text> allTexts = new List<Text>();
 
    string content = string.Empty;
    Font fontData = null;
    FontStyle fontStyle;
    int fontSize = 14;
    float lineSpacing = 0f;
    bool richText = true;
    TextAnchor alignment;
    HorizontalWrapMode hwmode;
    VerticalWrapMode vwmode;
    Color m_Color;
    Material m_Material;
    bool raycastTarget;
 
    [ContextMenu("UpdateText")]
    public void UpdateText()
    {
        FindAllText();
 
        for (int i = allTexts.Count - 1; i >= 0; i--)
        {
            var text = allTexts[i];
            if (text != null)
            {
                content = text.text;
                fontData = text.font;
                fontStyle = text.fontStyle;
                fontSize = text.fontSize;
                lineSpacing = text.lineSpacing;
                richText = text.supportRichText;
                alignment = text.alignment;
                hwmode = text.horizontalOverflow;
                vwmode = text.verticalOverflow;
                m_Color = text.color;
                m_Material = text.material;
                raycastTarget = text.raycastTarget;
 
                var gameObject = text.gameObject;
                Component.DestroyImmediate(text);
                TextEx textex = gameObject.AddMissingComponent<TextEx>();
 
                textex.text = content;
                textex.font = fontData;
                textex.fontStyle = fontStyle;
                textex.fontSize = fontSize;
                textex.lineSpacing = lineSpacing;
                textex.supportRichText = richText;
                textex.alignment = alignment;
                textex.horizontalOverflow = hwmode;
                textex.verticalOverflow = vwmode;
                textex.color = m_Color;
                textex.material = m_Material;
                textex.raycastTarget = raycastTarget;
            }
        }
 
    }
 
    void FindAllText()
    {
        allTexts.Clear();
        FindChildText(this.transform, ref allTexts);
    }
 
    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);
            }
 
        }
    }
 
    #region 字色替换
    [SerializeField] Color m_BeforeColor = Color.white;
    [SerializeField] Color m_AfterColor = Color.white;
    [ContextMenu("替换字色")]
    public void UpdateTextColor()
    {
        FindAllText();
        for (int i = allTexts.Count - 1; i >= 0; i--)
        {
            if (allTexts[i].color.Equals(m_BeforeColor))
            {
                allTexts[i].color = m_AfterColor;
            }
        }
    }
    #endregion
}