using UnityEngine;
using System.Collections;
using UnityEngine.UI;
///
/// 超链接按钮 参考资料 [1] 陌的专栏 http://blog.csdn.net/juan_bo/article/details/52301302
///
public class UILinkButton : MonoBehaviour
{
private Text linkText;
public string m_url;
void Awake()
{
var tfText = transform.Find("Text");
if (tfText)
linkText = transform.Find("Text").GetComponent();
}
void Start()
{
CreateLink(linkText, onButtonClick);
}
public void CreateLink(Text text, UnityEngine.Events.UnityAction onClickBtn)
{
if (text == null)
return;
//克隆Text,获得相同的属性
Text underline = Instantiate(text) as Text;
underline.name = "Underline";
underline.transform.SetParent(text.transform);
RectTransform rt = underline.rectTransform;
underline.transform.localScale = Vector3.one;
//设置下划线坐标和位置
rt.anchoredPosition3D = Vector3.zero;
rt.offsetMax = Vector2.zero;
rt.offsetMin = Vector2.zero;
rt.anchorMax = Vector2.one;
rt.anchorMin = Vector2.zero;
underline.text = "_";
float perlineWidth = underline.preferredWidth; //单个下划线宽度
float width = text.preferredWidth;
int lineCount = (int)Mathf.Round(width / perlineWidth);
for (int i = 1; i < lineCount; i++)
underline.text += "_";
var btn = text.gameObject.AddComponent();
btn.onClick.AddListener(onClickBtn);
}
//点击响应
void onButtonClick()
{
if (string.IsNullOrEmpty(m_url))
return;
Application.OpenURL(m_url);
}
}