private void OnSetChatMessage()
        {
            //messageText.rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, thisrect.sizeDelta.x)
            //Debug.Log(messageText.li);

            int   lines     = textLength / _RefTextLineLength;
            float newheight = lines * _RefHeight;

            thisrect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, newheight);

            Debug.Log(lines);

            messageBubble.color = Color.white;

            StartCoroutine(ShowLabel());

            onMessageEnd?.Call();
        }
 public static void ON_TEXTMESHPRO_UGUI_PROPERTY_CHANGED(bool isChanged, Object obj)
 {
     TEXTMESHPRO_UGUI_PROPERTY_EVENT.Call(isChanged, obj);
 }
 public static void ON_RESOURCES_LOADED()
 {
     RESOURCE_LOAD_EVENT.Call();
 }
 public static void ON_TMP_SETTINGS_CHANGED()
 {
     TMP_SETTINGS_PROPERTY_EVENT.Call();
 }
 public static void ON_TEXT_CHANGED(Object obj)
 {
     TEXT_CHANGED_EVENT.Call(obj);
 }
 public static void ON_COLOR_GRADIENT_PROPERTY_CHANGED(Object gradient)
 {
     COLOR_GRADIENT_PROPERTY_EVENT.Call(gradient);
 }
 public static void ON_TEXT_STYLE_PROPERTY_CHANGED(bool isChanged)
 {
     TEXT_STYLE_PROPERTY_EVENT.Call(isChanged);
 }
 public static void ON_DRAG_AND_DROP_MATERIAL_CHANGED(GameObject sender, Material currentMaterial, Material newMaterial)
 {
     DRAG_AND_DROP_MATERIAL_EVENT.Call(sender, currentMaterial, newMaterial);
 }
 public static void ON_SPRITE_ASSET_PROPERTY_CHANGED(bool isChanged, Object obj)
 {
     SPRITE_ASSET_PROPERTY_EVENT.Call(isChanged, obj);
 }
 public static void ON_FONT_PROPERTY_CHANGED(bool isChanged, Object font)
 {
     FONT_PROPERTY_EVENT.Call(isChanged, font);
 }
 public static void ON_MATERIAL_PROPERTY_CHANGED(bool isChanged, Material mat)
 {
     MATERIAL_PROPERTY_EVENT.Call(isChanged, mat);
 }
        //public static readonly FastAction FONT_ASSET_DESTROYED_EVENT = new FastAction();


        //static TMPro_EventManager()
        //{
        //    // Register to the willRenderCanvases callback once
        //    // then the WILL_RENDER_CANVASES FastAction will handle the rest
        //    Canvas.willRenderCanvases += WILL_RENDER_CANVASES.Call;
        //}

        public static void ON_PRE_RENDER_OBJECT_CHANGED()
        {
            OnPreRenderObject_Event.Call();
        }