오늘의 학습 키워드

TextMeshPro 움직이기

 

공부한 내용

TextMeshPro 움직이기

TextMeshPro로 만들어진 문자를 움직이려면 TMP_TextInfo라는 것에 접근을 해서 각 문자의 버텍스 위치를 변경해주면 된다. 나는 Sin파의 절댓값을 사용하여 글자가 움직이게 만들었다.

문제 : Index관련 오류가 떴는데 TextMesh의 버텍스를 불러오지 못하는 문제였다.

원인 : 버텍스는 TMP_Text의 메쉬로부터 불러오는데 메쉬부터가 null이니 버텍스는 당연히 불러오지 못하게 되는 것이다.

해결 : TMP_Text의 ForceMeshUpdate 함수 호출 이후에 text의 mesh를 초기화줌으로써 버텍스를 추적할 수 있게끔 하여 해결하였다.

private void JumpLoadingText()
{
    loadingText.ForceMeshUpdate();
    _loadingTextMesh = loadingText.mesh;
    _verts = _loadingTextMesh.vertices;

    for (int i = 0; i < loadingText.textInfo.characterCount; i++)
    {
        TMP_CharacterInfo c = loadingText.textInfo.characterInfo[i];

        int index = c.vertexIndex;

        float offset = Mathf.Sin(Time.time + i) * textJumpingHeight;

        for (int j = 0; j < 4; j++)
        {
            _verts[index + j].y += offset;
        }
    }

    _loadingTextMesh.vertices = _verts;
    loadingText.canvasRenderer.SetMesh(_loadingTextMesh);
}

 

 

오늘의 회고

 오늘은 TMP_Text의 글자를 움직이는 법을 배웠다. 일반 텍스트랑은 다르게 버텍스를 조작하여 움직일 수도 있고 컬러도 조정이 가능하다는 점이 쓸만한 것 같다. 유튜브의 여러 컨텐츠에는 다양한 효과들도 있던데 이런 것 하나하나가 게임의 비주얼적인 요소에서 꽤나 좋아보이게 하는 영향을 준다고 생각한다. 다음에는 상자에서 글자를 뽑아내는 것과 같은 효과도 구현해볼 생각이다.

 내일은 개인 과제를 제출하는 날이다. 내일까지 열심히 해서 계획한 만큼 결과물을 뽑아내도록 하자. 내일도 파이팅!

+ Recent posts