[Unity] 문자열을 조정하기 위해 Text의 줄 수를 지정합니다.
개요
UGUI에서 UI를 만들 때 레이아웃을 초과하지 않기 위해 문자열의 길이를 지정하는 방법을 소개합니다
지정한 줄 수를 초과할 때 다음과 같은 내용을 표시할 수 있습니다
기본적
사용TextGenerator류.이 중
lineCount
속성이 있습니다.예를 들어, UI의 경우 다음 스크립트를 사용하여 로그에 7 을 출력합니다.
그 밖에 이 스크립트에 대해 최초의 몇 프레임에서 0을 출력합니다.
한 번 표시하지 않으면 줄 수를 얻을 수 없기 때문에 공을 들여야 한다는 것이다.
public class LineTest : MonoBehaviour
{
[SerializeField] Text textComponent;
void Update()
{
Debug.Log(this.textComponent.cachedTextGeneratorForLayout.lineCount);
}
}
레이아웃을 벗어나지 않도록 문자열 가공하기
"..."을 초과하면 TextComponent로 설정하기 전에 줄 수를 계산합니다.다음으로 표시
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TextLimit : MonoBehaviour
{
[SerializeField] Text textComponent;
[SerializeField] int lineLimit = 6;
public void SetText(string originalText)
{
var text = originalText;
var textLength = originalText.Length;
//TextGenerationSettingにはTextのRectSizeを渡す
var setting = this.textComponent.GetGenerationSettings(new Vector2(this.textComponent.rectTransform.rect.width, this.textComponent.rectTransform.rect.height));
var generator = this.textComponent.cachedTextGeneratorForLayout;
while (true)
{
//Populate関数を使って一度評価を行う
generator.Populate(text, setting);
if (generator.lineCount > this.lineLimit)
{
//指定の行数より長い場合1文字削って試す
textLength--;
text = text.Substring(0, textLength) + "...";
}
else
{
//指定行数に収まったのでTextに文字列を設定する
this.textComponent.text = text;
break;
}
}
}
#if UNITY_EDITOR
[ContextMenu("Test1")]
void Test1()
{
SetText("私わたくしはその人を常に先生と呼んでいた。");
}
[ContextMenu("Test2")]
void Test2()
{
SetText("私わたくしはその人を常に先生と呼んでいた。だからここでもただ先生と書くだけで本名は打ち明けない。");
}
[ContextMenu("Test3")]
void Test3()
{
SetText("This section of the documentation contains details of the scripting API that Unity provides. ");
}
#endif
}
Test1을 실행합니다.지정한 줄 수 내에 직접 표시Test2를 실행합니다.지정된 행 수를 초과하여 [...] 을 선택합니다.에서 디스플레이를 생략합니다.
Test3을 실행합니다.영어도 잘 돼요.
Reference
이 문제에 관하여([Unity] 문자열을 조정하기 위해 Text의 줄 수를 지정합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/tkada/articles/36aca8a99ef47b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)