From 50d4dfe953dff69cc268335d1f47b3b5c00fb3d7 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 26 Feb 2026 17:50:07 +0800 Subject: [PATCH] feature: add menu : Text - UniText --- Editor/UniTextEditorMenu.cs | 47 +++++++++++++++++++++++++++++++ Editor/UniTextEditorMenu.cs.meta | 2 ++ Runtime/Core/Component/UniText.cs | 4 ++- 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 Editor/UniTextEditorMenu.cs create mode 100644 Editor/UniTextEditorMenu.cs.meta diff --git a/Editor/UniTextEditorMenu.cs b/Editor/UniTextEditorMenu.cs new file mode 100644 index 0000000..3f33f2c --- /dev/null +++ b/Editor/UniTextEditorMenu.cs @@ -0,0 +1,47 @@ +using UnityEngine; +using UnityEditor; +using System.Reflection; +namespace LightSide +{ + public class UniTextEditorMenu + { + [MenuItem("GameObject/UI/Text - UniText", false, 1990)] + private static void CreateUniTextObject() + { + if(Selection.gameObjects == null || Selection.gameObjects.Length == 0) + { + CreateUniTextObject(null); + } + else + { + foreach (var obj in Selection.gameObjects) { + CreateUniTextObject(obj); + } + } + + } + + private static void CreateUniTextObject(GameObject parent) + { + var go = new GameObject("UniText"); + if (parent != null) + { + go.transform.SetParent(parent.transform, false); + go.layer = parent.gameObject.layer; + } + var text = go.AddComponent(); + var font = text.GetType().GetField("fontStack", BindingFlags.NonPublic | BindingFlags.Instance); + if (font != null) + { + font.SetValue(text, UniTextSettings.DefaultFontStack); + } + var appearance = text.GetType().GetField("appearance", BindingFlags.NonPublic | BindingFlags.Instance); + if (appearance != null) + { + appearance.SetValue(text, UniTextSettings.DefaultAppearance); + } + Undo.RegisterCreatedObjectUndo(go, "CreateUniTextObject"); + Selection.activeObject = go; + } + } +} diff --git a/Editor/UniTextEditorMenu.cs.meta b/Editor/UniTextEditorMenu.cs.meta new file mode 100644 index 0000000..1ceac09 --- /dev/null +++ b/Editor/UniTextEditorMenu.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 3d3c4a114b7f43246afea8d833b42d95 \ No newline at end of file diff --git a/Runtime/Core/Component/UniText.cs b/Runtime/Core/Component/UniText.cs index a932696..a340db5 100644 --- a/Runtime/Core/Component/UniText.cs +++ b/Runtime/Core/Component/UniText.cs @@ -1267,7 +1267,9 @@ private SubMeshRenderer CreateSubMeshRenderer(int index, Mesh mesh, Material[] m { var go = new GameObject("-_UTSM_-") { hideFlags = HideFlags.HideAndDontSave }; go.transform.SetParent(transform, false); - +#if UNITY_EDITOR + UnityEditor.Undo.RegisterCreatedObjectUndo(go, "CreateUniTextObject"); +#endif var rt = go.AddComponent(); rt.pivot = rectTransform.pivot; rt.anchorMin = Vector2.zero;