Skip to content

Commit 9b68fd7

Browse files
Update to new candidate release (#1)
* Add all Menus and Context Menus * Add real-time Font color change to GlobalFontManagerWindow * Add Undo capabilities * Adjust namespaces and folders * Fix duplicated hierarchyChanged calls * Add custom editor for TextData, add Reflection for property changes * Change EnumFlag field to EnumPopup * Add Color default and SaveOption defaults for TextData * Add defauls for FontSize and LIneSpacing for TextData
1 parent b243218 commit 9b68fd7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+2413
-681
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
This is where your Global Font preferences are saved.
22
They are saved as ScriptableObjects.
3-
Do not delete them, unless you just want to.
3+
Do not delete them, unless you just want to.
4+
Arial asset is created by default.
File renamed without changes.
File renamed without changes.

Assets/GTS.GlobalTextSystem/Editor/Data.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
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 UnityEngine;
15+
using System.Collections.Generic;
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+
/// <summary>
24+
/// ScriptableObject to hold the global Text Settings.
25+
/// </summary>
26+
public class TextData : ScriptableObject
27+
{
28+
public string text = "This holds all of your settings for Text Objects!";
29+
30+
[SerializeField]
31+
public Font font { get; set; }
32+
public FontStyle fontStyle { get; set; }
33+
private int _fontSize = 14;
34+
public int fontSize { get { return _fontSize; } set { this._fontSize = value; } }
35+
private float _lineSpacing = 1f;
36+
public float lineSpacing { get { return _lineSpacing; } set { this._lineSpacing = value; } }
37+
public bool supportRichText { get; set; }
38+
39+
public TextAnchor alignment { get; set; }
40+
public bool alignByGeometry { get; set; }
41+
public HorizontalWrapMode horizontalOverflow { get; set; }
42+
public VerticalWrapMode verticalOverflow { get; set; }
43+
public bool resizeTextForBestFit { get; set; }
44+
45+
public int resizeTextMinSize { get; set; }
46+
public int resizeTextMaxSize { get; set; }
47+
48+
private Color _color = Color.black;
49+
public Color color { get { return _color; } set { this._color = value; } }
50+
public Material material { get; set; }
51+
public bool raycastTarget { get; set; }
52+
53+
public TextOverrides overrides;
54+
55+
public Dictionary<string, bool> SavedSettings = new Dictionary<string, bool>()
56+
{
57+
{ StringLibrary.FONT, true },
58+
{ StringLibrary.FONT_STYLE, false },
59+
{ StringLibrary.FONT_SIZE, false },
60+
{ StringLibrary.LINE_SPACING, false },
61+
{ StringLibrary.RICH_TEXT, false },
62+
{ StringLibrary.ALIGNMENT, false },
63+
{ StringLibrary.ALIGN_BY_GEOMETRY, false },
64+
{ StringLibrary.HORIZONTAL_OVERFLOW, false },
65+
{ StringLibrary.VERTICAL_OVERFLOW, false },
66+
{ StringLibrary.BEST_FIT, false },
67+
{ StringLibrary.TEXT_MIN, false },
68+
{ StringLibrary.TEXT_MAX, false },
69+
{ StringLibrary.COLOR, true },
70+
{ StringLibrary.MATERIAL, false },
71+
{ StringLibrary.RAYCAST, false }
72+
};
73+
}
74+
}

Assets/GTS.GlobalUIFont/Editor/GlobalFontManager.cs.meta renamed to Assets/GTS.GlobalTextSystem/Editor/Data/TextData.cs.meta

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 256 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,256 @@
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+
}

Assets/GTS.GlobalUIFont/Editor/GlobalFontManagerWindow.cs.meta renamed to Assets/GTS.GlobalTextSystem/Editor/Data/TextDataEditor.cs.meta

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)