Files
XRLib/Assets/Scripts/UVC/Extention/TextEx.cs

106 lines
3.8 KiB
C#
Raw Normal View History

2025-06-04 23:10:11 +09:00
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;
}
}
}