1+ /*
2+ ================================================================================
3+ Product: Unity-Set-Global_UI-Text_Font
4+ Developer: GlassToeStudio@gmail.com
5+ Source: https://github.com/GlassToeStudio/Unity-Set-Global-UI-Text-Font
6+ Company: GlassToeStudio
7+ Website: http://glasstoestudio.weebly.com/
8+ Date: June 19, 2018
9+ =================================================================================
10+ MIT License
11+ ================================================================================
12+ */
13+
14+ using UnityEditor ;
15+ using UnityEngine ;
16+ using GTS . GlobalTextSystem . Libraries ;
17+
18+ /// <summary>
19+ /// Small System that provides useful functionality to Unity's UI Text system.
20+ /// </summary>>
21+ namespace GTS . GlobalTextSystem . Data
22+ {
23+ [ CustomEditor ( typeof ( TextData ) ) ]
24+ public class TextDataEditor : Editor
25+ {
26+ bool foldCharacter = true ;
27+ bool foldParagraph = true ;
28+ TextData myTarget ;
29+
30+ int startHorizontalWidth = 250 ;
31+
32+ int startLabelWidth = 130 ;
33+ int endLabelWidth = 100 ;
34+ int startFieldWidth = 120 ;
35+ int endFieldWidth = 20 ;
36+
37+ private void OnEnable ( )
38+ {
39+ myTarget = ( TextData ) target ;
40+ }
41+
42+ public override void OnInspectorGUI ( )
43+ {
44+ //base.OnInspectorGUI();
45+
46+ EditorGUILayout . LabelField ( "Text" ) ;
47+ myTarget . text = EditorGUILayout . TextField ( myTarget . text , GUILayout . Height ( 40 ) ) ;
48+
49+ #region Character
50+
51+ foldCharacter = EditorGUILayout . Foldout ( foldCharacter , "Character" ,
52+ new GUIStyle ( EditorStyles . foldout )
53+ {
54+ fontStyle = FontStyle . Bold ,
55+ } ) ;
56+
57+ if ( foldCharacter )
58+ {
59+ // Font
60+ StartSection ( ) ;
61+ myTarget . font = ( Font ) EditorGUILayout . ObjectField ( "Font" , myTarget . font , typeof ( Font ) , true , GUILayout . Width ( startHorizontalWidth ) ) ;
62+ MiddleSection ( ) ;
63+ myTarget . overrides . saveFont = EditorGUILayout . Toggle ( myTarget . overrides . saveFont ) ;
64+ EditorGUILayout . LabelField ( "Apply to new." ) ;
65+ EndSction ( ) ;
66+
67+ // FontStyle
68+ StartSection ( ) ;
69+ myTarget . fontStyle = ( FontStyle ) EditorGUILayout . EnumPopup ( "FontStyle" , myTarget . fontStyle , GUILayout . Width ( startHorizontalWidth ) ) ;
70+ MiddleSection ( ) ;
71+ myTarget . overrides . saveFontStyle = EditorGUILayout . Toggle ( myTarget . overrides . saveFontStyle ) ;
72+ EditorGUILayout . LabelField ( "Apply to new." ) ;
73+ EndSction ( ) ;
74+
75+ // FontSize
76+ StartSection ( ) ;
77+ myTarget . fontSize = EditorGUILayout . IntField ( "FontSize" , myTarget . fontSize , GUILayout . Width ( startHorizontalWidth ) ) ;
78+ MiddleSection ( ) ;
79+ myTarget . overrides . saveFontSize = EditorGUILayout . Toggle ( myTarget . overrides . saveFontSize ) ;
80+ EditorGUILayout . LabelField ( "Apply to new." ) ;
81+ EndSction ( ) ;
82+
83+ // Line Spacing
84+ StartSection ( ) ;
85+ myTarget . lineSpacing = EditorGUILayout . FloatField ( "Line Spacing" , myTarget . lineSpacing , GUILayout . Width ( startHorizontalWidth ) ) ;
86+ MiddleSection ( ) ;
87+ myTarget . overrides . saveLineSpacing = EditorGUILayout . Toggle ( myTarget . overrides . saveLineSpacing ) ;
88+ EditorGUILayout . LabelField ( "Apply to new." ) ;
89+ EndSction ( ) ;
90+
91+ // Rich Text
92+ StartSection ( ) ;
93+ myTarget . supportRichText = EditorGUILayout . Toggle ( "Rich Text" , myTarget . supportRichText , GUILayout . Width ( startHorizontalWidth ) ) ;
94+ MiddleSection ( ) ;
95+ myTarget . overrides . saveRichText = EditorGUILayout . Toggle ( myTarget . overrides . saveRichText ) ;
96+ EditorGUILayout . LabelField ( "Apply to new." ) ;
97+ EndSction ( ) ;
98+
99+ EditorGUI . indentLevel = 0 ;
100+ }
101+
102+ #endregion
103+
104+ EditorGUILayout . Space ( ) ;
105+
106+ #region Paragraph
107+
108+ foldParagraph = EditorGUILayout . Foldout ( foldParagraph , "Paragraph" ,
109+ new GUIStyle ( EditorStyles . foldout )
110+ {
111+ fontStyle = FontStyle . Bold ,
112+ } ) ;
113+
114+
115+ if ( foldParagraph )
116+ {
117+ // Alignment
118+ StartSection ( ) ;
119+ myTarget . alignment = ( TextAnchor ) EditorGUILayout . EnumPopup ( "Alignment" , myTarget . alignment , GUILayout . Width ( startHorizontalWidth ) ) ;
120+ MiddleSection ( ) ;
121+ myTarget . overrides . saveAlignment = EditorGUILayout . Toggle ( myTarget . overrides . saveAlignment ) ;
122+ EditorGUILayout . LabelField ( "Apply to new." ) ;
123+ EndSction ( ) ;
124+
125+ // Align By Geometry
126+ StartSection ( ) ;
127+ myTarget . alignByGeometry = EditorGUILayout . Toggle ( "Align By Geometry" , myTarget . alignByGeometry , GUILayout . Width ( startHorizontalWidth ) ) ;
128+ MiddleSection ( ) ;
129+ myTarget . overrides . saveAlighnByGeometry = EditorGUILayout . Toggle ( myTarget . overrides . saveAlighnByGeometry ) ;
130+ EditorGUILayout . LabelField ( "Apply to new." ) ;
131+ EndSction ( ) ;
132+
133+ // Horizontal Overflow
134+ StartSection ( ) ;
135+ myTarget . horizontalOverflow = ( HorizontalWrapMode ) EditorGUILayout . EnumPopup ( "Horizontal Overflow" , myTarget . horizontalOverflow , GUILayout . Width ( startHorizontalWidth ) ) ;
136+ MiddleSection ( ) ;
137+ myTarget . overrides . saveHorizontalOverflow = EditorGUILayout . Toggle ( myTarget . overrides . saveHorizontalOverflow ) ;
138+ EditorGUILayout . LabelField ( "Apply to new." ) ;
139+ EndSction ( ) ;
140+
141+ // Vertical Overflow
142+ StartSection ( ) ;
143+ myTarget . verticalOverflow = ( VerticalWrapMode ) EditorGUILayout . EnumPopup ( "Vertical Overflow" , myTarget . verticalOverflow , GUILayout . Width ( startHorizontalWidth ) ) ;
144+ MiddleSection ( ) ;
145+ myTarget . overrides . saveVerticalOVerflow = EditorGUILayout . Toggle ( myTarget . overrides . saveVerticalOVerflow ) ;
146+ EditorGUILayout . LabelField ( "Apply to new." ) ;
147+ EndSction ( ) ;
148+
149+ // Best Fit
150+ StartSection ( ) ;
151+ myTarget . resizeTextForBestFit = EditorGUILayout . Toggle ( "Best Fit" , myTarget . resizeTextForBestFit , GUILayout . Width ( startHorizontalWidth ) ) ;
152+ MiddleSection ( ) ;
153+ myTarget . overrides . saveBestFit = EditorGUILayout . Toggle ( myTarget . overrides . saveBestFit ) ;
154+ EditorGUILayout . LabelField ( "Apply to new." ) ;
155+ EndSction ( ) ;
156+
157+ // Best Fit Options
158+ if ( myTarget . resizeTextForBestFit )
159+ {
160+ // Min Size
161+ StartSection ( 2 ) ;
162+ myTarget . resizeTextMinSize = EditorGUILayout . IntField ( "Min Size" , myTarget . resizeTextMinSize , GUILayout . Width ( startHorizontalWidth ) ) ;
163+ MiddleSection ( ) ;
164+ myTarget . overrides . saveMinText = EditorGUILayout . Toggle ( myTarget . overrides . saveMinText ) ;
165+ EditorGUILayout . LabelField ( "Apply to new." ) ;
166+ EndSction ( ) ;
167+
168+ // Max Size
169+ StartSection ( 2 ) ;
170+ myTarget . resizeTextMaxSize = EditorGUILayout . IntField ( "Max Size" , myTarget . resizeTextMaxSize , GUILayout . Width ( startHorizontalWidth ) ) ;
171+ MiddleSection ( ) ;
172+ myTarget . overrides . saveMaxText = EditorGUILayout . Toggle ( myTarget . overrides . saveMaxText ) ;
173+ EditorGUILayout . LabelField ( "Apply to new." ) ;
174+ EndSction ( ) ;
175+ }
176+ EditorGUI . indentLevel = 0 ;
177+ }
178+
179+ #endregion
180+
181+ EditorGUILayout . Space ( ) ;
182+
183+ #region Other
184+
185+ // Color
186+ StartSection ( 0 ) ;
187+ myTarget . color = EditorGUILayout . ColorField ( "Color" , myTarget . color , GUILayout . Width ( startHorizontalWidth ) ) ;
188+ MiddleSection ( ) ;
189+ MiddleSection ( ) ;
190+ myTarget . overrides . saveColor = EditorGUILayout . Toggle ( myTarget . overrides . saveColor ) ;
191+ EditorGUILayout . LabelField ( "Apply to new." ) ;
192+ EndSction ( ) ;
193+
194+ // Material
195+ StartSection ( 0 ) ;
196+ myTarget . material = ( Material ) EditorGUILayout . ObjectField ( "Material" , myTarget . material , typeof ( Material ) , true , GUILayout . Width ( startHorizontalWidth ) ) ;
197+ MiddleSection ( ) ;
198+ MiddleSection ( ) ;
199+ myTarget . overrides . saveMaterial = EditorGUILayout . Toggle ( myTarget . overrides . saveMaterial ) ;
200+ EditorGUILayout . LabelField ( "Apply to new." ) ;
201+ EndSction ( ) ;
202+
203+ // Raycast
204+ StartSection ( 0 ) ;
205+ myTarget . raycastTarget = EditorGUILayout . Toggle ( "Raycast Target" , myTarget . raycastTarget , GUILayout . Width ( startHorizontalWidth ) ) ;
206+ MiddleSection ( ) ;
207+ MiddleSection ( ) ;
208+ myTarget . overrides . saveRaycaset = EditorGUILayout . Toggle ( myTarget . overrides . saveRaycaset ) ;
209+ EditorGUILayout . LabelField ( "Apply to new." ) ;
210+ EndSction ( ) ;
211+
212+ #endregion
213+
214+ UpdateDictionary ( ) ;
215+
216+ EditorUtility . SetDirty ( target ) ;
217+ }
218+
219+ private void UpdateDictionary ( )
220+ {
221+ myTarget . SavedSettings [ StringLibrary . FONT ] = myTarget . overrides . saveFont ;
222+ myTarget . SavedSettings [ StringLibrary . FONT_STYLE ] = myTarget . overrides . saveFontStyle ;
223+ myTarget . SavedSettings [ StringLibrary . FONT_SIZE ] = myTarget . overrides . saveFontSize ;
224+ myTarget . SavedSettings [ StringLibrary . LINE_SPACING ] = myTarget . overrides . saveLineSpacing ;
225+ myTarget . SavedSettings [ StringLibrary . RICH_TEXT ] = myTarget . overrides . saveRichText ;
226+ myTarget . SavedSettings [ StringLibrary . ALIGNMENT ] = myTarget . overrides . saveAlignment ;
227+ myTarget . SavedSettings [ StringLibrary . ALIGN_BY_GEOMETRY ] = myTarget . overrides . saveAlighnByGeometry ;
228+ myTarget . SavedSettings [ StringLibrary . HORIZONTAL_OVERFLOW ] = myTarget . overrides . saveHorizontalOverflow ;
229+ myTarget . SavedSettings [ StringLibrary . VERTICAL_OVERFLOW ] = myTarget . overrides . saveVerticalOVerflow ;
230+ myTarget . SavedSettings [ StringLibrary . BEST_FIT ] = myTarget . overrides . saveBestFit ;
231+ myTarget . SavedSettings [ StringLibrary . TEXT_MIN ] = myTarget . overrides . saveMinText ;
232+ myTarget . SavedSettings [ StringLibrary . TEXT_MAX ] = myTarget . overrides . saveMinText ;
233+ myTarget . SavedSettings [ StringLibrary . COLOR ] = myTarget . overrides . saveColor ;
234+ myTarget . SavedSettings [ StringLibrary . MATERIAL ] = myTarget . overrides . saveMaterial ;
235+ myTarget . SavedSettings [ StringLibrary . RAYCAST ] = myTarget . overrides . saveRaycaset ;
236+ }
237+
238+ private void StartSection ( int indent = 1 )
239+ {
240+ GUILayout . BeginHorizontal ( ) ;
241+ EditorGUI . indentLevel = indent ;
242+ EditorGUIUtility . labelWidth = startLabelWidth ;
243+ EditorGUIUtility . fieldWidth = startFieldWidth ;
244+ }
245+ private void MiddleSection ( int indent = 0 )
246+ {
247+ EditorGUI . indentLevel = indent ;
248+ EditorGUIUtility . labelWidth = endLabelWidth ;
249+ EditorGUIUtility . fieldWidth = endFieldWidth ;
250+ }
251+ private void EndSction ( )
252+ {
253+ EditorGUILayout . EndHorizontal ( ) ;
254+ }
255+ }
256+ }
0 commit comments