From 796f66c31058308e01c700fcd83e6673666f7571 Mon Sep 17 00:00:00 2001 From: SimonDarksideJ Date: Sat, 17 Jun 2023 18:33:22 +0100 Subject: [PATCH 1/2] Updated LineRenderer and UILIneConnector implementations to both be safer and include warning about placing a UILineRenderer at any other position than 0,0,0. --- Runtime/Scripts/Primitives/UILineRenderer.cs | 6 ++++-- Runtime/Scripts/Utilities/UILineConnector.cs | 12 ++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Runtime/Scripts/Primitives/UILineRenderer.cs b/Runtime/Scripts/Primitives/UILineRenderer.cs index 7225145..019c3b6 100644 --- a/Runtime/Scripts/Primitives/UILineRenderer.cs +++ b/Runtime/Scripts/Primitives/UILineRenderer.cs @@ -296,8 +296,6 @@ namespace UnityEngine.UI.Extensions PopulateMesh (vh, pointsToDraw); } } - - } private UIVertex[] CreateLineCap(Vector2 start, Vector2 end, SegmentType type) @@ -501,6 +499,10 @@ namespace UnityEngine.UI.Extensions { m_points = new Vector2[1]; } + if (transform.GetComponent().position != Vector3.zero) + { + Debug.LogWarning("A Line Renderer component should be on a RectTransform positioned at (0,0,0), do not use in child Objects.\nFor best results, create separate RectTransforms as children of the canvas positioned at (0,0) for a UILineRenderer and do not move."); + } } } } diff --git a/Runtime/Scripts/Utilities/UILineConnector.cs b/Runtime/Scripts/Utilities/UILineConnector.cs index 487dec5..77a3fc9 100644 --- a/Runtime/Scripts/Utilities/UILineConnector.cs +++ b/Runtime/Scripts/Utilities/UILineConnector.cs @@ -40,6 +40,10 @@ namespace UnityEngine.UI.Extensions bool updateLine = false; for (int i = 0; i < transforms.Length; i++) { + if (transforms[i] == null) + { + continue; + } if (!updateLine && previousPositions[i] != transforms[i].position) { updateLine = true; @@ -60,6 +64,10 @@ namespace UnityEngine.UI.Extensions // First, convert the pivot to worldspace for (int i = 0; i < transforms.Length; i++) { + if (transforms[i] == null) + { + continue; + } worldSpaces[i] = transforms[i].TransformPoint(thisPivot); } @@ -83,6 +91,10 @@ namespace UnityEngine.UI.Extensions previousPositions = new Vector3[transforms.Length]; for (int i = 0; i < transforms.Length; i++) { + if (transforms[i] == null) + { + continue; + } previousPositions[i] = transforms[i].position; } } From 9fbcd39b88561c0acf5b7e5bd16442f9cd3111d2 Mon Sep 17 00:00:00 2001 From: SimonDarksideJ Date: Sun, 9 Jul 2023 16:48:55 +0100 Subject: [PATCH 2/2] Deprecated Text Effects with Unity 2022 as they are incompatible with TextMeshPro --- README.md | 2 ++ Runtime/Scripts/Effects/CurvedText.cs | 6 ++-- Runtime/Scripts/Effects/CylinderText.cs | 6 ++-- Runtime/Scripts/Effects/LetterSpacing.cs | 38 +++++---------------- Runtime/Scripts/Effects/MonoSpacing.cs | 42 ++++-------------------- 5 files changed, 21 insertions(+), 73 deletions(-) diff --git a/README.md b/README.md index 454e909..90bc0bb 100644 --- a/README.md +++ b/README.md @@ -209,6 +209,8 @@ There are almost 70+ extension controls / effect and other utilities in the proj |NicerOutline|RaycastMask|UIFlippable|UIImageCrop|SoftAlphaMask| |CylinderText|UIParticleSystem|CurlyUI|Shine Effect|Shader Effects| +> Text Effects are not supported with TextMeshPro due to its architecture, try using the native TextMeshPro effects instead. + [Additional Components](https://unity-ui-extensions.github.io/Controls.html#additional-components) |ReturnKeyTrigger|TabNavigation|uGUITools|ScrollRectTweener|ScrollRectLinker| diff --git a/Runtime/Scripts/Effects/CurvedText.cs b/Runtime/Scripts/Effects/CurvedText.cs index b26d01d..1f69c7e 100644 --- a/Runtime/Scripts/Effects/CurvedText.cs +++ b/Runtime/Scripts/Effects/CurvedText.cs @@ -1,13 +1,10 @@ /// Credit Breyer /// Sourced from - http://forum.unity3d.com/threads/scripts-useful-4-6-scripts-collection.264161/#post-1777407 +#if !UNITY_2022_1_OR_NEWER namespace UnityEngine.UI.Extensions { -#if UNITY_2022_1_OR_NEWER - [RequireComponent(typeof(TMPro.TMP_Text))] -#else [RequireComponent(typeof(Text))] -#endif [RequireComponent(typeof(RectTransform))] [AddComponentMenu("UI/Effects/Extensions/Curved Text")] public class CurvedText : BaseMeshEffect @@ -87,3 +84,4 @@ namespace UnityEngine.UI.Extensions } } } +#endif \ No newline at end of file diff --git a/Runtime/Scripts/Effects/CylinderText.cs b/Runtime/Scripts/Effects/CylinderText.cs index 541f8e0..a303cb4 100644 --- a/Runtime/Scripts/Effects/CylinderText.cs +++ b/Runtime/Scripts/Effects/CylinderText.cs @@ -1,14 +1,11 @@ /// adaption for cylindrical bending by herbst /// Credit Breyer /// Sourced from - http://forum.unity3d.com/threads/scripts-useful-4-6-scripts-collection.264161/#post-1777407 +#if UNITY_2022_1_OR_NEWER namespace UnityEngine.UI.Extensions { -#if UNITY_2022_1_OR_NEWER - [RequireComponent(typeof(TMPro.TMP_Text))] -#else [RequireComponent(typeof(Text))] -#endif [RequireComponent(typeof(RectTransform))] [AddComponentMenu("UI/Effects/Extensions/Cylinder Text")] public class CylinderText : BaseMeshEffect @@ -57,3 +54,4 @@ namespace UnityEngine.UI.Extensions } } } +#endif \ No newline at end of file diff --git a/Runtime/Scripts/Effects/LetterSpacing.cs b/Runtime/Scripts/Effects/LetterSpacing.cs index e9fea6c..8b3b14e 100644 --- a/Runtime/Scripts/Effects/LetterSpacing.cs +++ b/Runtime/Scripts/Effects/LetterSpacing.cs @@ -40,7 +40,7 @@ use HTML-like tags in your text. Try it out, you'll see what I mean. It doesn't break down entirely, but it doesn't really do what you'd want either. */ - +#if !UNITY_2022_1_OR_NEWER using System.Collections.Generic; namespace UnityEngine.UI.Extensions @@ -74,6 +74,11 @@ namespace UnityEngine.UI.Extensions } } + protected override void Awake() + { + Debug.Log($"Awake, [{m_spacing}]"); + } + public override void ModifyMesh(VertexHelper vh) { if (! IsActive()) return; @@ -81,11 +86,8 @@ namespace UnityEngine.UI.Extensions List verts = new List(); vh.GetUIVertexStream(verts); -#if UNITY_2022_1_OR_NEWER - var text = GetComponent(); -#else var text = GetComponent(); -#endif + if (text == null) { Debug.LogWarning("LetterSpacing: Missing Text component"); @@ -98,28 +100,6 @@ namespace UnityEngine.UI.Extensions float alignmentFactor = 0; int glyphIdx = 0; -#if UNITY_2022_1_OR_NEWER - switch (text.alignment) - { - case TMPro.TextAlignmentOptions.BottomLeft: - case TMPro.TextAlignmentOptions.MidlineLeft: - case TMPro.TextAlignmentOptions.TopLeft: - alignmentFactor = 0f; - break; - - case TMPro.TextAlignmentOptions.BottomJustified: - case TMPro.TextAlignmentOptions.MidlineJustified: - case TMPro.TextAlignmentOptions.TopJustified: - alignmentFactor = 0.5f; - break; - - case TMPro.TextAlignmentOptions.BottomRight: - case TMPro.TextAlignmentOptions.MidlineRight: - case TMPro.TextAlignmentOptions.TopRight: - alignmentFactor = 1f; - break; - } -#else switch (text.alignment) { case TextAnchor.LowerLeft: @@ -140,8 +120,7 @@ namespace UnityEngine.UI.Extensions alignmentFactor = 1f; break; } -#endif - + for (int lineIdx=0; lineIdx < lines.Length; lineIdx++) { string line = lines[lineIdx]; @@ -193,3 +172,4 @@ namespace UnityEngine.UI.Extensions } } } +#endif \ No newline at end of file diff --git a/Runtime/Scripts/Effects/MonoSpacing.cs b/Runtime/Scripts/Effects/MonoSpacing.cs index 465f547..66877dd 100644 --- a/Runtime/Scripts/Effects/MonoSpacing.cs +++ b/Runtime/Scripts/Effects/MonoSpacing.cs @@ -40,17 +40,14 @@ use HTML-like tags in your text. Try it out, you'll see what I mean. It doesn't break down entirely, but it doesn't really do what you'd want either. */ +#if !UNITY_2022_1_OR_NEWER using System.Collections.Generic; namespace UnityEngine.UI.Extensions { [AddComponentMenu("UI/Effects/Extensions/Mono Spacing")] -#if UNITY_2022_1_OR_NEWER - [RequireComponent(typeof(TMPro.TMP_Text))] -#else [RequireComponent(typeof(Text))] -#endif [RequireComponent(typeof(RectTransform))] ///Summary /// Note, Vertex Count has changed in 5.2.1+, is now 6 (two tris) instead of 4 (tri strip). @@ -62,21 +59,15 @@ namespace UnityEngine.UI.Extensions public bool UseHalfCharWidth = false; private RectTransform rectTransform; -#if UNITY_2022_1_OR_NEWER - private TMPro.TMP_Text text; -#else + private Text text; -#endif protected MonoSpacing() { } protected override void Awake() { -#if UNITY_2022_1_OR_NEWER - text = GetComponent(); -#else text = GetComponent(); -#endif + if (text == null) { Debug.LogWarning("MonoSpacing: Missing Text component"); @@ -117,28 +108,6 @@ namespace UnityEngine.UI.Extensions float alignmentFactor = 0; int glyphIdx = 0; -#if UNITY_2022_1_OR_NEWER - switch (text.alignment) - { - case TMPro.TextAlignmentOptions.BottomLeft: - case TMPro.TextAlignmentOptions.MidlineLeft: - case TMPro.TextAlignmentOptions.TopLeft: - alignmentFactor = 0f; - break; - - case TMPro.TextAlignmentOptions.BottomJustified: - case TMPro.TextAlignmentOptions.MidlineJustified: - case TMPro.TextAlignmentOptions.TopJustified: - alignmentFactor = 0.5f; - break; - - case TMPro.TextAlignmentOptions.BottomRight: - case TMPro.TextAlignmentOptions.MidlineRight: - case TMPro.TextAlignmentOptions.TopRight: - alignmentFactor = 1f; - break; - } -#else switch (text.alignment) { case TextAnchor.LowerLeft: @@ -159,7 +128,7 @@ namespace UnityEngine.UI.Extensions alignmentFactor = 1f; break; } -#endif + for (int lineIdx=0; lineIdx < lines.Length; lineIdx++) { string line = lines[lineIdx]; @@ -221,4 +190,5 @@ namespace UnityEngine.UI.Extensions vh.AddUIVertexTriangleStream(verts); } } -} \ No newline at end of file +} +#endif \ No newline at end of file