修复TextMeshPro关闭时残留组件影响Text初始化的问题

This commit is contained in:
monitor1394
2025-01-08 22:28:47 +08:00
parent 3db02b86b4
commit ddbfd9b7ef
2 changed files with 28 additions and 1 deletions

View File

@@ -79,6 +79,8 @@ slug: /changelog
## master
* (2025.01.08) 修复`TextMeshPro`关闭时残留组件影响`Text`初始化的问题
## v3.13.0
版本要点:

View File

@@ -204,6 +204,25 @@ namespace XCharts.Runtime
}
}
public static void RemoveTMPComponents(GameObject gameObject)
{
var coms = gameObject.GetComponents<Component>();
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<T>(Transform transform) where T : Component
{
@@ -239,7 +258,13 @@ namespace XCharts.Runtime
{
if (gameObject.GetComponent<T>() == null)
{
return gameObject.AddComponent<T>();
var com = gameObject.AddComponent<T>();
if (com == null)
{
RemoveTMPComponents(gameObject);
return gameObject.AddComponent<T>();
}
return com;
}
else
{