可横竖控制的Text bg Control

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

[RequireComponent(typeof(ContentSizeFitter))]
public class textBgControl : UIBehaviour {

    public int maxWidth = 630;
    public int defaultHeight = 60;
    private RectTransform bgRectTrans;
    private RectTransform rectTrans;
    private ContentSizeFitter sizeFitter;
    private Text text;
    private Vector2 sizedelta;

	void Start ()
    {
        bgRectTrans = transform.parent.GetComponent<RectTransform>();
        rectTrans = GetComponent<RectTransform>();
      
        text = GetComponent<Text>();
	}

    protected override void OnRectTransformDimensionsChange()
    {
        bgRectTrans = transform.parent.GetComponent<RectTransform>();
        rectTrans = GetComponent<RectTransform>();

        text = GetComponent<Text>();

        sizeFitter = GetComponent<ContentSizeFitter>();
        if (rectTrans.sizeDelta.x > maxWidth)
        {
            text.horizontalOverflow = HorizontalWrapMode.Wrap;
            float height = GetWidthOrHeight(RectTransform.Axis.Vertical);
        
            sizedelta.Set(maxWidth, height);
    
            bgRectTrans.sizeDelta = sizedelta;
        }
        else
        {
            float width = GetWidthOrHeight(RectTransform.Axis.Horizontal);
            sizedelta.Set(width,defaultHeight);
            bgRectTrans.sizeDelta = sizedelta;
        }
    }

    public float GetWidthOrHeight(RectTransform.Axis axis)
    {
        if (axis == RectTransform.Axis.Horizontal)
            return rectTrans.rect.width;
        return rectTrans.rect.height;
    }

}

  

posted @ 2021-10-23 16:09  钢与铁  阅读(19)  评论(0编辑  收藏  举报