Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
ee5d012
Create context menus and Extension methods.
GlassToeStudio Jun 24, 2018
0941d5e
Break out funtionality to seperate classes.
GlassToeStudio Jun 25, 2018
39b21e7
Update readme
GlassToeStudio Jun 25, 2018
f655bf8
Create generic method to change all Text properties
GlassToeStudio Jun 25, 2018
54034da
Add code of conduct to dev branch
GlassToeStudio Jun 25, 2018
bc01c87
Add all Menus and Context Menus
GlassToeStudio Jun 26, 2018
8077a8a
Bug Fixes for null references
GlassToeStudio Jun 27, 2018
c973a71
Add real-time Font color change to GlobalFontManagerWindow
GlassToeStudio Jun 27, 2018
d75ba88
Add gif of real time color change
GlassToeStudio Jun 27, 2018
daa2572
Add Undo capabilities
GlassToeStudio Jun 27, 2018
a82586e
Refactor entire project - danger.
GlassToeStudio Jun 28, 2018
4008b4f
Change root folder name
GlassToeStudio Jun 28, 2018
f24a869
Change root folder name
GlassToeStudio Jun 28, 2018
2298fec
Fix typos
GlassToeStudio Jun 28, 2018
cbebcf4
Adjust namespaces and folders
GlassToeStudio Jun 28, 2018
810b54e
Fix duplicated hierarchyChanged calls
GlassToeStudio Jun 28, 2018
748dc1e
Add custom editor for TextData, add Reflection for property changes
GlassToeStudio Jun 30, 2018
ec2e2ca
Change EnumFlag field to EnumPopup
GlassToeStudio Jun 30, 2018
4b22317
Add Color default and SaveOption defaults for TextData
GlassToeStudio Jun 30, 2018
65b3604
Add defauls for FontSize and LIneSpacing for TextData
GlassToeStudio Jun 30, 2018
489c777
Exctract TextOverrides to a seperate file
GlassToeStudio Jun 30, 2018
bfb4614
Add two images for README
GlassToeStudio Jun 30, 2018
a33439d
Change project name
GlassToeStudio Jun 30, 2018
97831d5
Update README.md
GlassToeStudio Jun 30, 2018
8d6743b
Update README.md
GlassToeStudio Jun 30, 2018
51800e4
Update README.md
GlassToeStudio Jun 30, 2018
d5fc896
Update README
GlassToeStudio Jun 30, 2018
aa19f5a
Update README.md
GlassToeStudio Jun 30, 2018
c2b4f76
Update README.md
GlassToeStudio Jun 30, 2018
87c13ec
Merge branch 'master' into development
GlassToeStudio Jun 30, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
This is where your Global Font preferences are saved.
They are saved as ScriptableObjects.
Do not delete them, unless you just want to.
Do not delete them, unless you just want to.
Arial asset is created by default.
File renamed without changes.
8 changes: 8 additions & 0 deletions Assets/GTS.GlobalTextSystem/Editor/Data.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

74 changes: 74 additions & 0 deletions Assets/GTS.GlobalTextSystem/Editor/Data/TextData.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
/*
================================================================================
Product: Unity-Set-Global_UI-Text_Font
Developer: GlassToeStudio@gmail.com
Source: https://github.com/GlassToeStudio/Unity-Set-Global-UI-Text-Font
Company: GlassToeStudio
Website: http://glasstoestudio.weebly.com/
Date: June 19, 2018
=================================================================================
MIT License
================================================================================
*/

using UnityEngine;
using System.Collections.Generic;
using GTS.GlobalTextSystem.Libraries;

/// <summary>
/// Small System that provides useful functionality to Unity's UI Text system.
/// </summary>>
namespace GTS.GlobalTextSystem.Data
{
/// <summary>
/// ScriptableObject to hold the global Text Settings.
/// </summary>
public class TextData : ScriptableObject
{
public string text = "This holds all of your settings for Text Objects!";

[SerializeField]
public Font font { get; set; }
public FontStyle fontStyle { get; set; }
private int _fontSize = 14;
public int fontSize { get { return _fontSize; } set { this._fontSize = value; } }
private float _lineSpacing = 1f;
public float lineSpacing { get { return _lineSpacing; } set { this._lineSpacing = value; } }
public bool supportRichText { get; set; }

public TextAnchor alignment { get; set; }
public bool alignByGeometry { get; set; }
public HorizontalWrapMode horizontalOverflow { get; set; }
public VerticalWrapMode verticalOverflow { get; set; }
public bool resizeTextForBestFit { get; set; }

public int resizeTextMinSize { get; set; }
public int resizeTextMaxSize { get; set; }

private Color _color = Color.black;
public Color color { get { return _color; } set { this._color = value; } }
public Material material { get; set; }
public bool raycastTarget { get; set; }

public TextOverrides overrides;

public Dictionary<string, bool> SavedSettings = new Dictionary<string, bool>()
{
{ StringLibrary.FONT, true },
{ StringLibrary.FONT_STYLE, false },
{ StringLibrary.FONT_SIZE, false },
{ StringLibrary.LINE_SPACING, false },
{ StringLibrary.RICH_TEXT, false },
{ StringLibrary.ALIGNMENT, false },
{ StringLibrary.ALIGN_BY_GEOMETRY, false },
{ StringLibrary.HORIZONTAL_OVERFLOW, false },
{ StringLibrary.VERTICAL_OVERFLOW, false },
{ StringLibrary.BEST_FIT, false },
{ StringLibrary.TEXT_MIN, false },
{ StringLibrary.TEXT_MAX, false },
{ StringLibrary.COLOR, true },
{ StringLibrary.MATERIAL, false },
{ StringLibrary.RAYCAST, false }
};
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

256 changes: 256 additions & 0 deletions Assets/GTS.GlobalTextSystem/Editor/Data/TextDataEditor.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,256 @@
/*
================================================================================
Product: Unity-Set-Global_UI-Text_Font
Developer: GlassToeStudio@gmail.com
Source: https://github.com/GlassToeStudio/Unity-Set-Global-UI-Text-Font
Company: GlassToeStudio
Website: http://glasstoestudio.weebly.com/
Date: June 19, 2018
=================================================================================
MIT License
================================================================================
*/

using UnityEditor;
using UnityEngine;
using GTS.GlobalTextSystem.Libraries;

/// <summary>
/// Small System that provides useful functionality to Unity's UI Text system.
/// </summary>>
namespace GTS.GlobalTextSystem.Data
{
[CustomEditor(typeof(TextData))]
public class TextDataEditor : Editor
{
bool foldCharacter = true;
bool foldParagraph = true;
TextData myTarget;

int startHorizontalWidth = 250;

int startLabelWidth = 130;
int endLabelWidth = 100;
int startFieldWidth = 120;
int endFieldWidth = 20;

private void OnEnable()
{
myTarget = (TextData)target;
}

public override void OnInspectorGUI()
{
//base.OnInspectorGUI();

EditorGUILayout.LabelField("Text");
myTarget.text = EditorGUILayout.TextField(myTarget.text, GUILayout.Height(40));

#region Character

foldCharacter = EditorGUILayout.Foldout(foldCharacter, "Character",
new GUIStyle(EditorStyles.foldout)
{
fontStyle = FontStyle.Bold,
});

if(foldCharacter)
{
// Font
StartSection();
myTarget.font = (Font) EditorGUILayout.ObjectField("Font", myTarget.font, typeof(Font), true, GUILayout.Width(startHorizontalWidth));
MiddleSection();
myTarget.overrides.saveFont = EditorGUILayout.Toggle(myTarget.overrides.saveFont);
EditorGUILayout.LabelField("Apply to new.");
EndSction();

// FontStyle
StartSection();
myTarget.fontStyle = (FontStyle)EditorGUILayout.EnumPopup("FontStyle", myTarget.fontStyle, GUILayout.Width(startHorizontalWidth));
MiddleSection();
myTarget.overrides.saveFontStyle = EditorGUILayout.Toggle(myTarget.overrides.saveFontStyle);
EditorGUILayout.LabelField("Apply to new.");
EndSction();

// FontSize
StartSection();
myTarget.fontSize = EditorGUILayout.IntField("FontSize", myTarget.fontSize, GUILayout.Width(startHorizontalWidth));
MiddleSection();
myTarget.overrides.saveFontSize = EditorGUILayout.Toggle(myTarget.overrides.saveFontSize);
EditorGUILayout.LabelField("Apply to new.");
EndSction();

// Line Spacing
StartSection();
myTarget.lineSpacing = EditorGUILayout.FloatField("Line Spacing", myTarget.lineSpacing, GUILayout.Width(startHorizontalWidth));
MiddleSection();
myTarget.overrides.saveLineSpacing = EditorGUILayout.Toggle(myTarget.overrides.saveLineSpacing);
EditorGUILayout.LabelField("Apply to new.");
EndSction();

// Rich Text
StartSection();
myTarget.supportRichText = EditorGUILayout.Toggle("Rich Text", myTarget.supportRichText, GUILayout.Width(startHorizontalWidth));
MiddleSection();
myTarget.overrides.saveRichText = EditorGUILayout.Toggle(myTarget.overrides.saveRichText);
EditorGUILayout.LabelField("Apply to new.");
EndSction();

EditorGUI.indentLevel = 0;
}

#endregion

EditorGUILayout.Space();

#region Paragraph

foldParagraph = EditorGUILayout.Foldout(foldParagraph, "Paragraph",
new GUIStyle(EditorStyles.foldout)
{
fontStyle = FontStyle.Bold,
});


if(foldParagraph)
{
// Alignment
StartSection();
myTarget.alignment = (TextAnchor)EditorGUILayout.EnumPopup("Alignment", myTarget.alignment, GUILayout.Width(startHorizontalWidth));
MiddleSection();
myTarget.overrides.saveAlignment = EditorGUILayout.Toggle(myTarget.overrides.saveAlignment);
EditorGUILayout.LabelField("Apply to new.");
EndSction();

// Align By Geometry
StartSection();
myTarget.alignByGeometry = EditorGUILayout.Toggle("Align By Geometry", myTarget.alignByGeometry, GUILayout.Width(startHorizontalWidth));
MiddleSection();
myTarget.overrides.saveAlighnByGeometry = EditorGUILayout.Toggle(myTarget.overrides.saveAlighnByGeometry);
EditorGUILayout.LabelField("Apply to new.");
EndSction();

// Horizontal Overflow
StartSection();
myTarget.horizontalOverflow = (HorizontalWrapMode)EditorGUILayout.EnumPopup("Horizontal Overflow", myTarget.horizontalOverflow, GUILayout.Width(startHorizontalWidth));
MiddleSection();
myTarget.overrides.saveHorizontalOverflow = EditorGUILayout.Toggle(myTarget.overrides.saveHorizontalOverflow);
EditorGUILayout.LabelField("Apply to new.");
EndSction();

// Vertical Overflow
StartSection();
myTarget.verticalOverflow = (VerticalWrapMode)EditorGUILayout.EnumPopup("Vertical Overflow", myTarget.verticalOverflow, GUILayout.Width(startHorizontalWidth));
MiddleSection();
myTarget.overrides.saveVerticalOVerflow = EditorGUILayout.Toggle(myTarget.overrides.saveVerticalOVerflow);
EditorGUILayout.LabelField("Apply to new.");
EndSction();

// Best Fit
StartSection();
myTarget.resizeTextForBestFit = EditorGUILayout.Toggle("Best Fit", myTarget.resizeTextForBestFit, GUILayout.Width(startHorizontalWidth));
MiddleSection();
myTarget.overrides.saveBestFit = EditorGUILayout.Toggle(myTarget.overrides.saveBestFit);
EditorGUILayout.LabelField("Apply to new.");
EndSction();

// Best Fit Options
if(myTarget.resizeTextForBestFit)
{
// Min Size
StartSection(2);
myTarget.resizeTextMinSize = EditorGUILayout.IntField("Min Size", myTarget.resizeTextMinSize, GUILayout.Width(startHorizontalWidth));
MiddleSection();
myTarget.overrides.saveMinText = EditorGUILayout.Toggle(myTarget.overrides.saveMinText);
EditorGUILayout.LabelField("Apply to new.");
EndSction();

// Max Size
StartSection(2);
myTarget.resizeTextMaxSize = EditorGUILayout.IntField("Max Size", myTarget.resizeTextMaxSize, GUILayout.Width(startHorizontalWidth));
MiddleSection();
myTarget.overrides.saveMaxText = EditorGUILayout.Toggle(myTarget.overrides.saveMaxText);
EditorGUILayout.LabelField("Apply to new.");
EndSction();
}
EditorGUI.indentLevel = 0;
}

#endregion

EditorGUILayout.Space();

#region Other

// Color
StartSection(0);
myTarget.color = EditorGUILayout.ColorField("Color", myTarget.color, GUILayout.Width(startHorizontalWidth));
MiddleSection();
MiddleSection();
myTarget.overrides.saveColor = EditorGUILayout.Toggle(myTarget.overrides.saveColor);
EditorGUILayout.LabelField("Apply to new.");
EndSction();

// Material
StartSection(0);
myTarget.material = (Material)EditorGUILayout.ObjectField("Material", myTarget.material, typeof(Material), true, GUILayout.Width(startHorizontalWidth));
MiddleSection();
MiddleSection();
myTarget.overrides.saveMaterial = EditorGUILayout.Toggle(myTarget.overrides.saveMaterial);
EditorGUILayout.LabelField("Apply to new.");
EndSction();

// Raycast
StartSection(0);
myTarget.raycastTarget = EditorGUILayout.Toggle("Raycast Target", myTarget.raycastTarget, GUILayout.Width(startHorizontalWidth));
MiddleSection();
MiddleSection();
myTarget.overrides.saveRaycaset = EditorGUILayout.Toggle(myTarget.overrides.saveRaycaset);
EditorGUILayout.LabelField("Apply to new.");
EndSction();

#endregion

UpdateDictionary();

EditorUtility.SetDirty(target);
}

private void UpdateDictionary()
{
myTarget.SavedSettings[StringLibrary.FONT] = myTarget.overrides.saveFont;
myTarget.SavedSettings[StringLibrary.FONT_STYLE] = myTarget.overrides.saveFontStyle;
myTarget.SavedSettings[StringLibrary.FONT_SIZE] = myTarget.overrides.saveFontSize;
myTarget.SavedSettings[StringLibrary.LINE_SPACING] = myTarget.overrides.saveLineSpacing;
myTarget.SavedSettings[StringLibrary.RICH_TEXT] = myTarget.overrides.saveRichText;
myTarget.SavedSettings[StringLibrary.ALIGNMENT] = myTarget.overrides.saveAlignment;
myTarget.SavedSettings[StringLibrary.ALIGN_BY_GEOMETRY] = myTarget.overrides.saveAlighnByGeometry;
myTarget.SavedSettings[StringLibrary.HORIZONTAL_OVERFLOW] = myTarget.overrides.saveHorizontalOverflow;
myTarget.SavedSettings[StringLibrary.VERTICAL_OVERFLOW] = myTarget.overrides.saveVerticalOVerflow;
myTarget.SavedSettings[StringLibrary.BEST_FIT] = myTarget.overrides.saveBestFit;
myTarget.SavedSettings[StringLibrary.TEXT_MIN] = myTarget.overrides.saveMinText;
myTarget.SavedSettings[StringLibrary.TEXT_MAX] = myTarget.overrides.saveMinText;
myTarget.SavedSettings[StringLibrary.COLOR] = myTarget.overrides.saveColor;
myTarget.SavedSettings[StringLibrary.MATERIAL] = myTarget.overrides.saveMaterial;
myTarget.SavedSettings[StringLibrary.RAYCAST] = myTarget.overrides.saveRaycaset;
}

private void StartSection(int indent = 1)
{
GUILayout.BeginHorizontal();
EditorGUI.indentLevel = indent;
EditorGUIUtility.labelWidth = startLabelWidth;
EditorGUIUtility.fieldWidth = startFieldWidth;
}
private void MiddleSection(int indent = 0)
{
EditorGUI.indentLevel = indent;
EditorGUIUtility.labelWidth = endLabelWidth;
EditorGUIUtility.fieldWidth = endFieldWidth;
}
private void EndSction()
{
EditorGUILayout.EndHorizontal();
}
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading