diff --git a/Documentation~/zh/changelog.md b/Documentation~/zh/changelog.md index 4f4657a2..d211113e 100644 --- a/Documentation~/zh/changelog.md +++ b/Documentation~/zh/changelog.md @@ -79,6 +79,8 @@ slug: /changelog ## master +* (2025.01.08) 修复`TextMeshPro`关闭时残留组件影响`Text`初始化的问题 + ## v3.13.0 版本要点: diff --git a/Runtime/Internal/Utilities/ChartHelper.cs b/Runtime/Internal/Utilities/ChartHelper.cs index c0bef4fc..6c1b31bf 100644 --- a/Runtime/Internal/Utilities/ChartHelper.cs +++ b/Runtime/Internal/Utilities/ChartHelper.cs @@ -204,6 +204,25 @@ namespace XCharts.Runtime } } + public static void RemoveTMPComponents(GameObject gameObject) + { + var coms = gameObject.GetComponents(); + foreach (var com in coms) + { + if (com.GetType().FullName.Contains("TMPro")) + { +#if UNITY_EDITOR + if (!Application.isPlaying) + GameObject.DestroyImmediate(com as UnityEngine.Object); + else + GameObject.Destroy(com as UnityEngine.Object); +#else + GameObject.Destroy(com as UnityEngine.Object); +#endif + } + } + } + [System.Obsolete("Use EnsureComponent instead")] public static T GetOrAddComponent(Transform transform) where T : Component { @@ -239,7 +258,13 @@ namespace XCharts.Runtime { if (gameObject.GetComponent() == null) { - return gameObject.AddComponent(); + var com = gameObject.AddComponent(); + if (com == null) + { + RemoveTMPComponents(gameObject); + return gameObject.AddComponent(); + } + return com; } else {