TextMeshPro에 배경색 추가하기 (배경색)
10193 단어 TextMeshProUnityC#
입문
안녕하십니까, 저는 한가로운 엔지니어입니다.
이번 보도 가능하다면 보십시오.
이번에는 여러분이 가장 좋아하는'TextMeshPro'의 신청입니다.
이런 느낌 문자열 배경색 따라갈 수 있어!
TextMeshPro에 배경색 추가
TextMeshPro에 문자열의 배경색을 추가하여 표시하려면 어려울 때가 있습니까?이럴 때 많은 사람들이 TextMeshPro의 뒷면에 Plane/Cube를 놓고 처리할 거라고 생각합니다.
그러나 Plane/Cube는 수동으로 치수를 변경하거나 오른쪽 정렬, 왼쪽 정렬, 자동 줄 바꿈, 글꼴 크기 등의 제한을 받아 매번 조정해야 하기 때문에 매우 번거로운 작업입니다.
따라서 이번에는 TextMeshPro의 묘사 영역을 따라 배경 대상을 자동으로 조정하고 공백 설정(Padding), 재질을 설정할 수 있는 스크립트를 만들어 봤습니다.
소스 코드
먼저 "TextMeshProBackground.cs"에서 다음 원본 코드를 사용하는 항목에 추가하십시오.
TextMeshProBackground.csusing System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
[RequireComponent(typeof(TextMeshPro))]
public class TextMeshProBackground : MonoBehaviour
{
public float PaddingTop;
public float PaddingBottom;
public float PaddingLeft;
public float PaddingRight;
public Material material;
private GameObject Background;
private TextMeshPro textMeshPro;
void Start()
{
this.textMeshPro = GetComponent<TextMeshPro>();
this.Background = GameObject.CreatePrimitive(PrimitiveType.Plane);
this.Background.name = "background";
this.Background.transform.Rotate(-90, 0, 0);
this.Background.transform.SetParent(this.transform);
if(material != null)
this.Background.GetComponent<MeshRenderer>().material = material;
}
void Update()
{
var bounds = this.textMeshPro.bounds;
// Debug.Log($"{bounds}");
// 描画位置の計算
{
var pos = bounds.center;
var hoseiX = -(PaddingLeft / 2) + (PaddingRight / 2);
var hoseiY = -(PaddingBottom / 2) + (PaddingTop / 2);
var hoseiZ = 0.01f;
this.Background.transform.localPosition = new Vector3(pos.x + hoseiX, pos.y + hoseiY, pos.z + hoseiZ);
}
// 描画サイズの計算
{
var scale = bounds.extents;
var hoseiW = (PaddingLeft + PaddingRight) / 10;
var hoseiH = (PaddingTop + PaddingBottom) / 10;
this.Background.transform.localScale = new Vector3((scale.x / 10 * 2) + hoseiW, 1, (scale.y / 10 * 2) + hoseiH);
}
}
}
사용 방법
그리고 위에 추가된 원본 코드를 TextMeshPro와 같은 대상에 추가하고 추가합니다.
속성 의미
TextMeshPro에 문자열의 배경색을 추가하여 표시하려면 어려울 때가 있습니까?이럴 때 많은 사람들이 TextMeshPro의 뒷면에 Plane/Cube를 놓고 처리할 거라고 생각합니다.
그러나 Plane/Cube는 수동으로 치수를 변경하거나 오른쪽 정렬, 왼쪽 정렬, 자동 줄 바꿈, 글꼴 크기 등의 제한을 받아 매번 조정해야 하기 때문에 매우 번거로운 작업입니다.
따라서 이번에는 TextMeshPro의 묘사 영역을 따라 배경 대상을 자동으로 조정하고 공백 설정(Padding), 재질을 설정할 수 있는 스크립트를 만들어 봤습니다.
소스 코드
먼저 "TextMeshProBackground.cs"에서 다음 원본 코드를 사용하는 항목에 추가하십시오.
TextMeshProBackground.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
[RequireComponent(typeof(TextMeshPro))]
public class TextMeshProBackground : MonoBehaviour
{
public float PaddingTop;
public float PaddingBottom;
public float PaddingLeft;
public float PaddingRight;
public Material material;
private GameObject Background;
private TextMeshPro textMeshPro;
void Start()
{
this.textMeshPro = GetComponent<TextMeshPro>();
this.Background = GameObject.CreatePrimitive(PrimitiveType.Plane);
this.Background.name = "background";
this.Background.transform.Rotate(-90, 0, 0);
this.Background.transform.SetParent(this.transform);
if(material != null)
this.Background.GetComponent<MeshRenderer>().material = material;
}
void Update()
{
var bounds = this.textMeshPro.bounds;
// Debug.Log($"{bounds}");
// 描画位置の計算
{
var pos = bounds.center;
var hoseiX = -(PaddingLeft / 2) + (PaddingRight / 2);
var hoseiY = -(PaddingBottom / 2) + (PaddingTop / 2);
var hoseiZ = 0.01f;
this.Background.transform.localPosition = new Vector3(pos.x + hoseiX, pos.y + hoseiY, pos.z + hoseiZ);
}
// 描画サイズの計算
{
var scale = bounds.extents;
var hoseiW = (PaddingLeft + PaddingRight) / 10;
var hoseiH = (PaddingTop + PaddingBottom) / 10;
this.Background.transform.localScale = new Vector3((scale.x / 10 * 2) + hoseiW, 1, (scale.y / 10 * 2) + hoseiH);
}
}
}
사용 방법
그리고 위에 추가된 원본 코드를 TextMeshPro와 같은 대상에 추가하고 추가합니다.
속성 의미

실행 결과
그럼 바로 적절하게 실행해 봅시다.
Unity에서 TextMeshPro의 텍스트 글꼴 크기와 표시 위치를 변경하거나 TextMeshProBackground의 여백 폭을 변경했습니다.
문제없이 따라가면 오케이!

끝날 때
가능하다면 블로그 "Unity+AssetStore 권장 정보"사람도 많은 기록이 있으니 꼭 참조하세요.
Reference
이 문제에 관하여(TextMeshPro에 배경색 추가하기 (배경색)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kingyo222/items/e52f9210d8d5e3ef98ed
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(TextMeshPro에 배경색 추가하기 (배경색)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kingyo222/items/e52f9210d8d5e3ef98ed텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)