3 using System.Collections;
4 using System.Collections.Generic;
10 [DisallowMultipleComponent]
11 [RequireComponent(typeof(MeshRenderer))]
12 [RequireComponent(typeof(MeshFilter))]
13 [AddComponentMenu(
"Mesh/TextMeshPro - Text")]
23 get {
return m_renderer.sortingLayerID; }
24 set { m_renderer.sortingLayerID = value; }
33 get {
return m_renderer.sortingOrder; }
34 set { m_renderer.sortingOrder = value; }
43 get {
return m_autoSizeTextContainer; }
52 [Obsolete(
"The TextContainer is now obsolete. Use the RectTransform instead.")]
69 if (m_transform ==
null)
70 m_transform = GetComponent<Transform>();
77 #pragma warning disable 0108 85 if (m_renderer ==
null)
86 m_renderer = GetComponent<Renderer>();
96 public override Mesh
mesh 103 m_mesh.hideFlags = HideFlags.HideAndDontSave;
118 if (m_meshFilter ==
null)
119 m_meshFilter = GetComponent<MeshFilter>();
131 get {
return m_maskType; }
132 set { m_maskType = value;
SetMask(m_maskType); }
141 public void SetMask(MaskingTypes type, Vector4 maskCoords)
145 SetMaskCoordinates(maskCoords);
155 public void SetMask(MaskingTypes type, Vector4 maskCoords,
float softnessX,
float softnessY)
159 SetMaskCoordinates(maskCoords, softnessX, softnessY);
170 if (m_verticesAlreadyDirty ||
this ==
null || !this.IsActive())
174 m_verticesAlreadyDirty =
true;
183 m_isPreferredWidthDirty =
true;
184 m_isPreferredHeightDirty =
true;
186 if (m_layoutAlreadyDirty ||
this ==
null || !this.IsActive())
190 m_layoutAlreadyDirty =
true;
192 m_isLayoutDirty =
true;
217 m_isInputParsingRequired =
true;
229 public override void Rebuild(CanvasUpdate update)
231 if (
this ==
null)
return;
233 if (update == CanvasUpdate.Prelayout)
235 if (m_autoSizeTextContainer)
240 else if (update == CanvasUpdate.PreRender)
243 m_verticesAlreadyDirty =
false;
244 m_layoutAlreadyDirty =
false;
246 if (!m_isMaterialDirty)
return;
249 m_isMaterialDirty =
false;
264 if (m_sharedMaterial ==
null)
267 if (m_renderer ==
null) m_renderer = this.
renderer;
270 if (m_renderer.sharedMaterial.GetInstanceID() != m_sharedMaterial.GetInstanceID())
271 m_renderer.sharedMaterial = m_sharedMaterial;
280 m_padding = ShaderUtilities.GetPadding(m_sharedMaterial, m_enableExtraPadding, m_isUsingBold);
281 m_isMaskingEnabled = ShaderUtilities.IsMaskingEnabled(m_sharedMaterial);
282 m_havePropertiesChanged =
true;
283 checkPaddingRequired =
false;
286 if (m_textInfo ==
null)
return;
289 for (
int i = 1; i < m_textInfo.materialCount; i++)
300 m_havePropertiesChanged =
true;
311 m_havePropertiesChanged =
true;
312 m_ignoreActiveState =
true;
344 if (m_textInfo.meshInfo[0].mesh ==
null) m_textInfo.meshInfo[0].mesh = m_mesh;
364 mesh.RecalculateBounds();
373 int materialCount = m_textInfo.materialCount;
375 for (
int i = 0; i < materialCount; i++)
393 mesh.vertices = m_textInfo.meshInfo[i].vertices;
396 mesh.uv = m_textInfo.meshInfo[i].uvs0;
399 mesh.uv2 = m_textInfo.meshInfo[i].uvs2;
405 mesh.colors32 = m_textInfo.meshInfo[i].colors32;
407 mesh.RecalculateBounds();
417 int materialCount = m_textInfo.materialCount;
419 for (
int i = 0; i < materialCount; i++)
435 mesh.vertices = m_textInfo.meshInfo[i].vertices;
436 mesh.uv = m_textInfo.meshInfo[i].uvs0;
437 mesh.uv2 = m_textInfo.meshInfo[i].uvs2;
439 mesh.colors32 = m_textInfo.meshInfo[i].colors32;
441 mesh.RecalculateBounds();
445 public void UpdateFontAsset()
451 private bool m_currentAutoSizeMode;
454 public void CalculateLayoutInputHorizontal()
458 if (!this.gameObject.activeInHierarchy)
463 m_currentAutoSizeMode = m_enableAutoSizing;
465 if (m_isCalculateSizeRequired || m_rectTransform.hasChanged)
477 if (m_enableAutoSizing)
479 m_fontSize = m_fontSizeMax;
483 m_marginWidth = k_LargePositiveFloat;
484 m_marginHeight = k_LargePositiveFloat;
486 if (m_isInputParsingRequired || m_isTextTruncated)
499 m_isLayoutDirty =
true;
504 public void CalculateLayoutInputVertical()
509 if (!this.gameObject.activeInHierarchy)
514 if (m_isCalculateSizeRequired || m_rectTransform.hasChanged)
522 m_flexibleHeight = 0;
526 if (m_enableAutoSizing)
528 m_currentAutoSizeMode =
true;
529 m_enableAutoSizing =
false;
532 m_marginHeight = k_LargePositiveFloat;
536 m_enableAutoSizing = m_currentAutoSizeMode;
546 m_isLayoutDirty =
true;
549 m_isCalculateSizeRequired =
false;
Mesh mesh
The Mesh of this text sub object.
Vector2 GetPreferredValues()
Function to Calculate the Preferred Width and Height of the text object.
TextRenderFlags
Flags controlling what vertex data gets pushed to the mesh.
static void RegisterTextElementForLayoutRebuild(TMP_Text element)
Function to register elements which require a layout rebuild.
override void UpdateMeshPadding()
Function to be used to force recomputing of character padding when Shader / Material properties have ...
void ClearUnusedVertices()
Function to clear the vertices while preserving the Triangles, Normals and Tangents.
override void ComputeMarginSize()
Update the margin width and height
void SetMask(MaskingTypes type, Vector4 maskCoords, float softnessX, float softnessY)
Function used to set the mask type, coordinates and softness
new Transform transform
Returns a reference to the Transform
override void LoadFontAsset()
Method which derived classes need to override to load Font Assets.
MaskingTypes maskType
Sets the mask type
override int SetArraySizes(int[] chars)
Method used to determine the number of visible characters and required buffer allocations.
Class which contains information about every element contained within the text object.
void ParseInputText()
Method to parse the input text based on its source
override void SetVerticesDirty()
Schedule rebuilding of the text geometry.
void StringToCharArray(string sourceText, ref int[] charBuffer)
Method to store the content of a string into an integer array.
static void RegisterTextElementForGraphicRebuild(TMP_Text element)
Function to register elements which require a layout rebuild.
int sortingLayerID
Sets the Renderer's sorting Layer ID
Renderer renderer
Returns the rendered assigned to the text object.
Base class which contains common properties and functions shared between the TextMeshPro and TextMesh...
TMP_VertexDataUpdateFlags
Flags to control what vertex data is pushed to the mesh and renderer.
override Mesh mesh
Returns the mesh assigned to the text object.
override void SetMaterialDirty()
Schedule updating of the material used by the text object.
override bool autoSizeTextContainer
Determines if the size of the text container will be adjusted to fit the text object when it is first...
override void Rebuild(CanvasUpdate update)
override void ForceMeshUpdate(bool ignoreInactive)
Function to force regeneration of the mesh before its normal process time. This is useful when change...
override void GenerateTextMesh()
This is the main function that is responsible for creating / displaying the text.
override void SetLayoutDirty()
override TMP_TextInfo GetTextInfo(string text)
Function used to evaluate the length of a text string.
override void UpdateVertexData()
Function to upload the updated vertex data and renderer.
override void SetAllDirty()
override void UpdateVertexData(TMP_VertexDataUpdateFlags flags)
Function to upload the updated vertex data and renderer.
int sortingOrder
Sets the Renderer's sorting order within the assigned layer.
string text
A string containing the text to be displayed.
TextContainer textContainer
Returns a reference to the Text Container
override void ClearMesh(bool updateMesh)
Function to clear the geometry of the Primary and Sub Text objects.
override void ForceMeshUpdate()
Function to force regeneration of the mesh before its normal process time. This is useful when change...
override void UpdateGeometry(Mesh mesh, int index)
Function to force the regeneration of the text object.
override void UpdateMaterial()
MeshFilter meshFilter
Returns the Mesh Filter of the text object.
void SetMask(MaskingTypes type, Vector4 maskCoords)
Function used to set the mask type and coordinates in World Space
void OnPreRenderObject()
Function called when the text needs to be updated.
void ClearMeshInfo(bool updateMesh)
Function to clear the content of the MeshInfo array while preserving the Triangles,...
TMP_TextInfo textInfo
Returns data about the text object which includes information about each character,...