106 lines
3.8 KiB
C#
106 lines
3.8 KiB
C#
|
|
using UnityEngine;
|
|||
|
|
using UnityEngine.UI;
|
|||
|
|
|
|||
|
|
namespace UVC.Extension
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// Unity UI Text <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE> <20><EFBFBD><DEBC><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
/// </summary>
|
|||
|
|
public static class TextEx
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// Text <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>ؽ<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>, <20>־<EFBFBD><D6BE><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD><CAB0><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǥ(...)<29><> <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="txt"><3E><><EFBFBD><EFBFBD> Text <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ</param>
|
|||
|
|
/// <param name="value">ǥ<><C7A5><EFBFBD><EFBFBD> <20>ؽ<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD></param>
|
|||
|
|
/// <example>
|
|||
|
|
/// <code>
|
|||
|
|
/// // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
/// Text myText = GetComponent<Text>();
|
|||
|
|
/// myText.SetTextWithEllipsis("<22><> <20>ؽ<EFBFBD>Ʈ<EFBFBD><C6AE> <20>ʹ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20>ٿ<EFBFBD><D9BF><EFBFBD><EFBFBD>ϴ<EFBFBD>...");
|
|||
|
|
/// </code>
|
|||
|
|
/// </example>
|
|||
|
|
public static void SetTextWithEllipsis(this Text txt, string value)
|
|||
|
|
{
|
|||
|
|
// TextGenerator <20><><EFBFBD><EFBFBD> <20><> <20>ؽ<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
TextGenerator generator = new TextGenerator();
|
|||
|
|
RectTransform rectTrans = txt.rectTransform;
|
|||
|
|
TextGenerationSettings settings = txt.GetGenerationSettings(rectTrans.rect.size);
|
|||
|
|
generator.Populate(value, settings);
|
|||
|
|
|
|||
|
|
// ǥ<><C7A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
|||
|
|
int characterCountVisible = generator.characterCountVisible;
|
|||
|
|
string updatedText = value;
|
|||
|
|
|
|||
|
|
// <20>ؽ<EFBFBD>Ʈ<EFBFBD><C6AE> ǥ<><C7A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD><CAB0>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǥ ó<><C3B3>
|
|||
|
|
if (value.Length > characterCountVisible && characterCountVisible >= 3)
|
|||
|
|
{
|
|||
|
|
updatedText = value.Substring(0, characterCountVisible - 3);
|
|||
|
|
updatedText += "...";
|
|||
|
|
}
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20>ؽ<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>
|
|||
|
|
txt.text = updatedText;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>ؽ<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD>̷<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="txt"><3E><><EFBFBD><EFBFBD> Text <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ</param>
|
|||
|
|
/// <param name="value">ǥ<><C7A5><EFBFBD><EFBFBD> <20>ؽ<EFBFBD>Ʈ</param>
|
|||
|
|
/// <param name="maxLength"><3E>ִ<EFBFBD> <20><><EFBFBD>ڼ<EFBFBD></param>
|
|||
|
|
/// <example>
|
|||
|
|
/// <code>
|
|||
|
|
/// Text myText = GetComponent<Text>();
|
|||
|
|
/// myText.SetTextWithMaxLength("<22><> <20>ؽ<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>", 10); // "<22><> <20>ؽ<EFBFBD>Ʈ ..."
|
|||
|
|
/// </code>
|
|||
|
|
/// </example>
|
|||
|
|
public static void SetTextWithMaxLength(this Text txt, string value, int maxLength)
|
|||
|
|
{
|
|||
|
|
if (string.IsNullOrEmpty(value) || value.Length <= maxLength)
|
|||
|
|
{
|
|||
|
|
txt.text = value;
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
txt.text = value.Substring(0, maxLength - 3) + "...";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>ؽ<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>ڸ<EFBFBD> õ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(,)<29><> <20>Բ<EFBFBD> ǥ<><C7A5><EFBFBD>մϴ<D5B4>.
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="txt"><3E><><EFBFBD><EFBFBD> Text <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ</param>
|
|||
|
|
/// <param name="number">ǥ<><C7A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD></param>
|
|||
|
|
/// <example>
|
|||
|
|
/// <code>
|
|||
|
|
/// Text scoreText = GetComponent<Text>();
|
|||
|
|
/// scoreText.SetNumberWithCommas(1000000); // "1,000,000" ǥ<><C7A5>
|
|||
|
|
/// </code>
|
|||
|
|
/// </example>
|
|||
|
|
public static void SetNumberWithCommas(this Text txt, int number)
|
|||
|
|
{
|
|||
|
|
txt.text = string.Format("{0:#,0}", number);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>ؽ<EFBFBD>Ʈ<EFBFBD><C6AE> ǥ<><C7A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>°<EFBFBD> <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD> <20><>Ʈ ũ<>⸦ <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="txt"><3E><><EFBFBD><EFBFBD> Text <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ</param>
|
|||
|
|
/// <param name="value">ǥ<><C7A5><EFBFBD><EFBFBD> <20>ؽ<EFBFBD>Ʈ</param>
|
|||
|
|
/// <param name="minSize"><3E>ּ<EFBFBD> <20><>Ʈ ũ<><C5A9></param>
|
|||
|
|
/// <param name="maxSize"><3E>ִ<EFBFBD> <20><>Ʈ ũ<><C5A9></param>
|
|||
|
|
/// <example>
|
|||
|
|
/// <code>
|
|||
|
|
/// Text titleText = GetComponent<Text>();
|
|||
|
|
/// titleText.SetTextWithBestFit("<22><><EFBFBD><EFBFBD> <20>ؽ<EFBFBD>Ʈ", 10, 30);
|
|||
|
|
/// </code>
|
|||
|
|
/// </example>
|
|||
|
|
public static void SetTextWithBestFit(this Text txt, string value, int minSize = 10, int maxSize = 40)
|
|||
|
|
{
|
|||
|
|
txt.text = value;
|
|||
|
|
txt.resizeTextForBestFit = true;
|
|||
|
|
txt.resizeTextMinSize = minSize;
|
|||
|
|
txt.resizeTextMaxSize = maxSize;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|