1
This commit is contained in:
@@ -951,7 +951,8 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示文字表情:先激活 ziObj,延迟一帧再设置 child0(TextMeshProUGUI)的文字,
|
||||
/// 显示文字表情:先设置文字再激活 ziObj,激活后立即强制刷新两级 ContentSizeFitter
|
||||
/// (child0 的 TMP 自身 + 父物体),避免宽度延迟一帧才更新。
|
||||
/// biaoQingDuration 秒后自动隐藏。与 spine 表情互斥(同时只显示一种)。
|
||||
/// </summary>
|
||||
/// <param name="text">文字内容</param>
|
||||
@@ -967,19 +968,18 @@ public class SitPosData : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
|
||||
if (spineObj != null) spineObj.SetActive(false);
|
||||
if (_biaoQingCoroutine != null) { StopCoroutine(_biaoQingCoroutine); _biaoQingCoroutine = null; }
|
||||
|
||||
// ⭐ 先激活,延迟一帧再设置字体:TMP 激活当帧设置 text 可能不刷新(显示旧字/默认字)
|
||||
// ⭐ 先设置字,再激活:TMP 非激活时改字不会向布局系统注册重建,激活后统一处理
|
||||
tmp.text = text;
|
||||
ziObj.SetActive(true);
|
||||
_biaoQingCoroutine = StartCoroutine(ShowBiaoQingZiRoutine(tmp, text));
|
||||
}
|
||||
|
||||
/// <summary>文字表情协程:延迟一帧设置文字 → 显示 biaoQingDuration 秒 → 自动隐藏</summary>
|
||||
private IEnumerator ShowBiaoQingZiRoutine(TextMeshProUGUI tmp, string text)
|
||||
{
|
||||
yield return null; // 等一帧,激活完成后再改字
|
||||
if (tmp != null) tmp.text = text;
|
||||
yield return new WaitForSeconds(biaoQingDuration);
|
||||
if (ziObj != null) ziObj.SetActive(false);
|
||||
_biaoQingCoroutine = null;
|
||||
// ⭐ 激活后立即按"先子后父"顺序强制刷新两级 ContentSizeFitter:
|
||||
// 子级 TMP 先算出新宽度,父级 Fitter 再根据子级新宽度收缩,
|
||||
// 否则布局要等帧末才重建,当帧读到的还是旧宽度
|
||||
LayoutRebuilder.ForceRebuildLayoutImmediate(tmp.rectTransform);
|
||||
LayoutRebuilder.ForceRebuildLayoutImmediate(ziObj.transform as RectTransform);
|
||||
Canvas.ForceUpdateCanvases();
|
||||
|
||||
_biaoQingCoroutine = StartCoroutine(HideBiaoQingAfter(ziObj));
|
||||
}
|
||||
|
||||
/// <summary>表情显示 biaoQingDuration 秒后自动隐藏</summary>
|
||||
|
||||
Reference in New Issue
Block a user