summaryrefslogtreecommitdiff
path: root/Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Graphics
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-04-29 21:11:10 +0800
committerchai <chaifix@163.com>2021-04-29 21:11:10 +0800
commit744b605cb80fe6d199e4f2cb8d2315990afbd365 (patch)
treec81f12297d0a473986f5ca060eb6b7f91645b088 /Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Graphics
parentd345feed67b425495dc3b757785a346797da7267 (diff)
*misc
Diffstat (limited to 'Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Graphics')
-rw-r--r--Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Graphics/Text.cs571
-rw-r--r--Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Graphics/Text.cs.meta11
2 files changed, 0 insertions, 582 deletions
diff --git a/Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Graphics/Text.cs b/Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Graphics/Text.cs
deleted file mode 100644
index c087983..0000000
--- a/Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Graphics/Text.cs
+++ /dev/null
@@ -1,571 +0,0 @@
-using System;
-using System.Collections.Generic;
-
-namespace UnityEngine.UI
-{
- /// <summary>
- /// Labels are graphics that display text.
- /// </summary>
-
- [AddComponentMenu("UI/Text", 10)]
- public class Text : MaskableGraphic, ILayoutElement
- {
- [SerializeField] private FontData m_FontData = FontData.defaultFontData;
-
-#if UNITY_EDITOR
- // needed to track font changes from the inspector
- private Font m_LastTrackedFont;
-#endif
-
- [TextArea(3, 10)][SerializeField] protected string m_Text = String.Empty;
-
- private TextGenerator m_TextCache;
- private TextGenerator m_TextCacheForLayout;
-
- static protected Material s_DefaultText = null;
-
- // We use this flag instead of Unregistering/Registering the callback to avoid allocation.
- [NonSerialized] protected bool m_DisableFontTextureRebuiltCallback = false;
-
- protected Text()
- {
- useLegacyMeshGeneration = false;
- }
-
- /// <summary>
- /// Get or set the material used by this Text.
- /// </summary>
-
- public TextGenerator cachedTextGenerator
- {
- get { return m_TextCache ?? (m_TextCache = (m_Text.Length != 0 ? new TextGenerator(m_Text.Length) : new TextGenerator())); }
- }
-
- public TextGenerator cachedTextGeneratorForLayout
- {
- get { return m_TextCacheForLayout ?? (m_TextCacheForLayout = new TextGenerator()); }
- }
-
- /// <summary>
- /// Text's texture comes from the font.
- /// </summary>
- public override Texture mainTexture
- {
- get
- {
- if (font != null && font.material != null && font.material.mainTexture != null)
- return font.material.mainTexture;
-
- if (m_Material != null)
- return m_Material.mainTexture;
-
- return base.mainTexture;
- }
- }
-
- public void FontTextureChanged()
- {
- // Only invoke if we are not destroyed.
- if (!this)
- return;
-
- if (m_DisableFontTextureRebuiltCallback)
- return;
-
- cachedTextGenerator.Invalidate();
-
- if (!IsActive())
- return;
-
- // this is a bit hacky, but it is currently the
- // cleanest solution....
- // if we detect the font texture has changed and are in a rebuild loop
- // we just regenerate the verts for the new UV's
- if (CanvasUpdateRegistry.IsRebuildingGraphics() || CanvasUpdateRegistry.IsRebuildingLayout())
- UpdateGeometry();
- else
- SetAllDirty();
- }
-
- public Font font
- {
- get
- {
- return m_FontData.font;
- }
- set
- {
- if (m_FontData.font == value)
- return;
-
- FontUpdateTracker.UntrackText(this);
-
- m_FontData.font = value;
-
- FontUpdateTracker.TrackText(this);
-
-#if UNITY_EDITOR
- // needed to track font changes from the inspector
- m_LastTrackedFont = value;
-#endif
-
- SetAllDirty();
- }
- }
-
- /// <summary>
- /// Text that's being displayed by the Text.
- /// </summary>
-
- public virtual string text
- {
- get
- {
- return m_Text;
- }
- set
- {
- if (String.IsNullOrEmpty(value))
- {
- if (String.IsNullOrEmpty(m_Text))
- return;
- m_Text = "";
- SetVerticesDirty();
- }
- else if (m_Text != value)
- {
- m_Text = value;
- SetVerticesDirty();
- SetLayoutDirty();
- }
- }
- }
-
- /// <summary>
- /// Whether this Text will support rich text.
- /// </summary>
-
- public bool supportRichText
- {
- get
- {
- return m_FontData.richText;
- }
- set
- {
- if (m_FontData.richText == value)
- return;
- m_FontData.richText = value;
- SetVerticesDirty();
- SetLayoutDirty();
- }
- }
-
- /// <summary>
- /// Wrap mode used by the text.
- /// </summary>
-
- public bool resizeTextForBestFit
- {
- get
- {
- return m_FontData.bestFit;
- }
- set
- {
- if (m_FontData.bestFit == value)
- return;
- m_FontData.bestFit = value;
- SetVerticesDirty();
- SetLayoutDirty();
- }
- }
-
- public int resizeTextMinSize
- {
- get
- {
- return m_FontData.minSize;
- }
- set
- {
- if (m_FontData.minSize == value)
- return;
- m_FontData.minSize = value;
-
- SetVerticesDirty();
- SetLayoutDirty();
- }
- }
-
- public int resizeTextMaxSize
- {
- get
- {
- return m_FontData.maxSize;
- }
- set
- {
- if (m_FontData.maxSize == value)
- return;
- m_FontData.maxSize = value;
-
- SetVerticesDirty();
- SetLayoutDirty();
- }
- }
-
- /// <summary>
- /// Alignment anchor used by the text.
- /// </summary>
-
- public TextAnchor alignment
- {
- get
- {
- return m_FontData.alignment;
- }
- set
- {
- if (m_FontData.alignment == value)
- return;
- m_FontData.alignment = value;
-
- SetVerticesDirty();
- SetLayoutDirty();
- }
- }
-
- public bool alignByGeometry
- {
- get
- {
- return m_FontData.alignByGeometry;
- }
- set
- {
- if (m_FontData.alignByGeometry == value)
- return;
- m_FontData.alignByGeometry = value;
-
- SetVerticesDirty();
- }
- }
-
- public int fontSize
- {
- get
- {
- return m_FontData.fontSize;
- }
- set
- {
- if (m_FontData.fontSize == value)
- return;
- m_FontData.fontSize = value;
-
- SetVerticesDirty();
- SetLayoutDirty();
- }
- }
-
- public HorizontalWrapMode horizontalOverflow
- {
- get
- {
- return m_FontData.horizontalOverflow;
- }
- set
- {
- if (m_FontData.horizontalOverflow == value)
- return;
- m_FontData.horizontalOverflow = value;
-
- SetVerticesDirty();
- SetLayoutDirty();
- }
- }
-
- public VerticalWrapMode verticalOverflow
- {
- get
- {
- return m_FontData.verticalOverflow;
- }
- set
- {
- if (m_FontData.verticalOverflow == value)
- return;
- m_FontData.verticalOverflow = value;
-
- SetVerticesDirty();
- SetLayoutDirty();
- }
- }
-
- public float lineSpacing
- {
- get
- {
- return m_FontData.lineSpacing;
- }
- set
- {
- if (m_FontData.lineSpacing == value)
- return;
- m_FontData.lineSpacing = value;
-
- SetVerticesDirty();
- SetLayoutDirty();
- }
- }
-
- /// <summary>
- /// Font style used by the Text's text.
- /// </summary>
-
- public FontStyle fontStyle
- {
- get
- {
- return m_FontData.fontStyle;
- }
- set
- {
- if (m_FontData.fontStyle == value)
- return;
- m_FontData.fontStyle = value;
-
- SetVerticesDirty();
- SetLayoutDirty();
- }
- }
-
- public float pixelsPerUnit
- {
- get
- {
- var localCanvas = canvas;
- if (!localCanvas)
- return 1;
- // For dynamic fonts, ensure we use one pixel per pixel on the screen.
- if (!font || font.dynamic)
- return localCanvas.scaleFactor;
- // For non-dynamic fonts, calculate pixels per unit based on specified font size relative to font object's own font size.
- if (m_FontData.fontSize <= 0 || font.fontSize <= 0)
- return 1;
- return font.fontSize / (float)m_FontData.fontSize;
- }
- }
-
- protected override void OnEnable()
- {
- base.OnEnable();
- cachedTextGenerator.Invalidate();
- FontUpdateTracker.TrackText(this);
- }
-
- protected override void OnDisable()
- {
- FontUpdateTracker.UntrackText(this);
- base.OnDisable();
- }
-
- protected override void UpdateGeometry()
- {
- if (font != null)
- {
- base.UpdateGeometry();
- }
- }
-
-#if UNITY_EDITOR
- protected override void Reset()
- {
- AssignDefaultFont();
- }
-
-#endif
- internal void AssignDefaultFont()
- {
- font = Resources.GetBuiltinResource<Font>("Arial.ttf");
- }
-
- public TextGenerationSettings GetGenerationSettings(Vector2 extents)
- {
- var settings = new TextGenerationSettings();
-
- settings.generationExtents = extents;
- if (font != null && font.dynamic)
- {
- settings.fontSize = m_FontData.fontSize;
- settings.resizeTextMinSize = m_FontData.minSize;
- settings.resizeTextMaxSize = m_FontData.maxSize;
- }
-
- // Other settings
- settings.textAnchor = m_FontData.alignment;
- settings.alignByGeometry = m_FontData.alignByGeometry;
- settings.scaleFactor = pixelsPerUnit;
- settings.color = color;
- settings.font = font;
- settings.pivot = rectTransform.pivot;
- settings.richText = m_FontData.richText;
- settings.lineSpacing = m_FontData.lineSpacing;
- settings.fontStyle = m_FontData.fontStyle;
- settings.resizeTextForBestFit = m_FontData.bestFit;
- settings.updateBounds = false;
- settings.horizontalOverflow = m_FontData.horizontalOverflow;
- settings.verticalOverflow = m_FontData.verticalOverflow;
-
- return settings;
- }
-
- static public Vector2 GetTextAnchorPivot(TextAnchor anchor)
- {
- switch (anchor)
- {
- case TextAnchor.LowerLeft: return new Vector2(0, 0);
- case TextAnchor.LowerCenter: return new Vector2(0.5f, 0);
- case TextAnchor.LowerRight: return new Vector2(1, 0);
- case TextAnchor.MiddleLeft: return new Vector2(0, 0.5f);
- case TextAnchor.MiddleCenter: return new Vector2(0.5f, 0.5f);
- case TextAnchor.MiddleRight: return new Vector2(1, 0.5f);
- case TextAnchor.UpperLeft: return new Vector2(0, 1);
- case TextAnchor.UpperCenter: return new Vector2(0.5f, 1);
- case TextAnchor.UpperRight: return new Vector2(1, 1);
- default: return Vector2.zero;
- }
- }
-
- readonly UIVertex[] m_TempVerts = new UIVertex[4];
- protected override void OnPopulateMesh(VertexHelper toFill)
- {
- if (font == null)
- return;
-
- // We don't care if we the font Texture changes while we are doing our Update.
- // The end result of cachedTextGenerator will be valid for this instance.
- // Otherwise we can get issues like Case 619238.
- m_DisableFontTextureRebuiltCallback = true;
-
- Vector2 extents = rectTransform.rect.size;
-
- var settings = GetGenerationSettings(extents);
- cachedTextGenerator.PopulateWithErrors(text, settings, gameObject);
-
- // Apply the offset to the vertices
- IList<UIVertex> verts = cachedTextGenerator.verts;
- float unitsPerPixel = 1 / pixelsPerUnit;
- //Last 4 verts are always a new line... (\n)
- int vertCount = verts.Count - 4;
-
- Vector2 roundingOffset = new Vector2(verts[0].position.x, verts[0].position.y) * unitsPerPixel;
- roundingOffset = PixelAdjustPoint(roundingOffset) - roundingOffset;
- toFill.Clear();
- if (roundingOffset != Vector2.zero)
- {
- for (int i = 0; i < vertCount; ++i)
- {
- int tempVertsIndex = i & 3;
- m_TempVerts[tempVertsIndex] = verts[i];
- m_TempVerts[tempVertsIndex].position *= unitsPerPixel;
- m_TempVerts[tempVertsIndex].position.x += roundingOffset.x;
- m_TempVerts[tempVertsIndex].position.y += roundingOffset.y;
- if (tempVertsIndex == 3)
- toFill.AddUIVertexQuad(m_TempVerts);
- }
- }
- else
- {
- for (int i = 0; i < vertCount; ++i)
- {
- int tempVertsIndex = i & 3;
- m_TempVerts[tempVertsIndex] = verts[i];
- m_TempVerts[tempVertsIndex].position *= unitsPerPixel;
- if (tempVertsIndex == 3)
- toFill.AddUIVertexQuad(m_TempVerts);
- }
- }
-
- m_DisableFontTextureRebuiltCallback = false;
- }
-
- public virtual void CalculateLayoutInputHorizontal() {}
- public virtual void CalculateLayoutInputVertical() {}
-
- public virtual float minWidth
- {
- get { return 0; }
- }
-
- public virtual float preferredWidth
- {
- get
- {
- var settings = GetGenerationSettings(Vector2.zero);
- return cachedTextGeneratorForLayout.GetPreferredWidth(m_Text, settings) / pixelsPerUnit;
- }
- }
-
- public virtual float flexibleWidth { get { return -1; } }
-
- public virtual float minHeight
- {
- get { return 0; }
- }
-
- public virtual float preferredHeight
- {
- get
- {
- var settings = GetGenerationSettings(new Vector2(GetPixelAdjustedRect().size.x, 0.0f));
- return cachedTextGeneratorForLayout.GetPreferredHeight(m_Text, settings) / pixelsPerUnit;
- }
- }
-
- public virtual float flexibleHeight { get { return -1; } }
-
- public virtual int layoutPriority { get { return 0; } }
-
-#if UNITY_EDITOR
- public override void OnRebuildRequested()
- {
- // After a Font asset gets re-imported the managed side gets deleted and recreated,
- // that means the delegates are not persisted.
- // so we need to properly enforce a consistent state here.
- FontUpdateTracker.UntrackText(this);
- FontUpdateTracker.TrackText(this);
-
- // Also the textgenerator is no longer valid.
- cachedTextGenerator.Invalidate();
-
- base.OnRebuildRequested();
- }
-
- // The Text inspector editor can change the font, and we need a way to track changes so that we get the appropriate rebuild callbacks
- // We can intercept changes in OnValidate, and keep track of the previous font reference
- protected override void OnValidate()
- {
- if (!IsActive())
- {
- base.OnValidate();
- return;
- }
-
- if (m_FontData.font != m_LastTrackedFont)
- {
- Font newFont = m_FontData.font;
- m_FontData.font = m_LastTrackedFont;
- FontUpdateTracker.UntrackText(this);
- m_FontData.font = newFont;
- FontUpdateTracker.TrackText(this);
-
- m_LastTrackedFont = newFont;
- }
- base.OnValidate();
- }
-
-#endif // if UNITY_EDITOR
- }
-}
diff --git a/Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Graphics/Text.cs.meta b/Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Graphics/Text.cs.meta
deleted file mode 100644
index ea6d1d8..0000000
--- a/Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Graphics/Text.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 48696ad002dcb2146ab8d6ad72d455d7
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant: