UGUI의 Text를 사용하다 보면 안 예쁘게 텍스트 줄이 바뀔 때가 있음
width에 비해 많이 남음
이럴 때는 일반적으로 사용하는 스페이스(' ')가 아닌 non-breaking space(nbsp, '\u00A0')을 사용해주면 됨
Text를 상속 받아 새로 만든 UIText
using UnityEngine;
using UnityEngine.UI;
public class UIText : Text
{
[SerializeField] private bool m_DisableWordWrap;
public override string text
{
get => base.text;
set
{
if (m_DisableWordWrap)
{
string nsbp = value.Replace(' ', '\u00A0');
base.text = nsbp;
return;
}
base.text = value;
}
}
}
UITextInspector
using UnityEditor;
using UnityEditor.UI;
[CustomEditor(typeof(UIText))]
public class UITextInspector : TextEditor
{
private SerializedProperty m_DisableWordWrap;
protected override void OnEnable()
{
base.OnEnable();
m_DisableWordWrap = serializedObject.FindProperty("m_DisableWordWrap");
}
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
serializedObject.Update();
EditorGUILayout.PropertyField(m_DisableWordWrap);
serializedObject.ApplyModifiedProperties();
}
}
이런 코드를 작성 해주면
Disable Word Wrap 옵션이 인스펙터에 표시됨
테스트
using UnityEngine;
using UnityEngine.UI;
public class Test : MonoBehaviour
{
public Text text;
public UIText uiText;
void Start()
{
uiText.text = "텍스트가 넘어가도 자동으로 줄이 바뀌지 않습니다.";
text.text = "텍스트가 넘어가면 자동으로 줄이 바뀝니다.";
}
}
결과
잘 됨
'개발 > Unity, C#' 카테고리의 다른 글
Unity Safe Area, Device Simulator (0) | 2019.12.29 |
---|---|
Unity GameView 관리하기 (해상도 변경 등) (0) | 2019.10.26 |
Unity 오브젝트 Null 체크할 때 주의할 점(거지 같은 점) (0) | 2019.10.14 |
Unity UGUI Text에서 특정 단어의 위치 찾기 (0) | 2019.09.12 |
Unity Update문에 대해서 (0) | 2019.07.27 |