Textの領域に収まりきらなかったら動的に文末を任意の文字列に置き換えてくれるやつ
備忘録です。
タイトルが長い
どう表現して良いのか分からなかった・・
コード
TextClipping.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TextClipping : MonoBehaviour {
// Use this for initialization
void Start () {
m_Text.text = ClipString(m_Text, "New Textaaaaaaaaaaaaaaaaaa", "...");
}
public static string ClipString(Text text, string str, string m_TailString)
{
var generationSettings = text.GetGenerationSettings(text.rectTransform.sizeDelta);
var generator = new TextGenerator ();
var tail = m_TailString;
var areaWidth = text.rectTransform.sizeDelta.x;
var subString = str;
for (int i = str.Length - 2; i > 1 + m_TailString.Length; i--) {
var temp = str.Substring(0, i) + tail;
var textWidth = generator.GetPreferredWidth(temp, generationSettings) / generationSettings.scaleFactor;
if (areaWidth > textWidth) {
subString = temp;
break;
}
}
return subString;
}
[SerializeField]
private Text m_Text;
}
これが
こうなる
TODO
収まりきらなかったら、文字列をスクロールとかさせたい