LoginSignup
2
0

More than 5 years have passed since last update.

Textの領域に収まりきらなかったら動的に文末を任意の文字列に置き換えてくれるやつ

Posted at

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;
}

これが

スクリーンショット 2018-12-11 19.16.47.png

 こうなる

スクリーンショット 2018-12-11 19.16.58.png

TODO

収まりきらなかったら、文字列をスクロールとかさせたい

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0