using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class TextUnderline : MonoBehaviour {
//Text that draws underline
public Text underline;
/*
refText: Text that its text content will be underlined
clear: clear underline
underlineVerticalOffsetScale: control distance between refText and underline
sample hierarchy structure:
refText(components: Text)
underline(components: Text, TextUnderline)
*/
public void setup(Text refText, bool clear = false, float underlineVerticalOffsetScale = 1.0f)
{
if(clear)
{
underline.text = "";
return;
}
RectTransform rt = underline.GetComponent();
RectTransform refRT = refText.GetComponent();
underline.font = refText.font;
underline.fontSize = refText.fontSize;
//underline.fontStyle = refText.fontStyle;
underline.color = refText.color;
underline.text = "_";
rt.localScale = refRT.localScale;
float refHeight = refText.preferredHeight;
float perlineWidth = underline.preferredWidth * rt.localScale.x;
Debug.Log(perlineWidth);
float refWidth = refText.preferredWidth;
int lineCount = (int)Mathf.Round(refWidth / perlineWidth);
Debug.Log(lineCount);
for (int i = 1; i < lineCount; i++)
{
underline.text += "_";
}
float selfHeight = underline.preferredHeight;
rt.anchoredPosition = new Vector2(0.0f, -(refHeight + selfHeight) * underlineVerticalOffsetScale);
}
}
2017年4月23日 星期日
Unity UGUI text underline
reference
訂閱:
張貼留言 (Atom)

沒有留言:
張貼留言