TextMeshPro에 배경색 추가하기 (배경색)

10193 단어 TextMeshProUnityC#

입문


안녕하십니까, 저는 한가로운 엔지니어입니다.
이번 보도 가능하다면 보십시오.
이번에는 여러분이 가장 좋아하는'TextMeshPro'의 신청입니다.
이런 느낌 문자열 배경색 따라갈 수 있어!

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와 같은 대상에 추가하고 추가합니다.
속성 의미
  • Padding Top: 위의 공백
  • PaddingBottom: 아래의 공백
  • Padding Left: 왼쪽의 공백
  • PaddingRight: 오른쪽의 공백
  • Material: Plane 객체가 배경색으로 설정된 재료를 생성합니다undefined

  • 실행 결과


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

    끝날 때


    가능하다면 블로그 "Unity+AssetStore 권장 정보"사람도 많은 기록이 있으니 꼭 참조하세요.

    좋은 웹페이지 즐겨찾기