문제상황

 

public class SignScript : MonoBehaviour
{
    public string text;
}

  다음과 같이 public으로 변수를 선언하면 unity 엔진에서 해당 변수의 값을 오브젝트마다 넣어줄 수 있다.

 

  이때 string의 경우 Enter는 입력되지 않고, \n과 같은 줄바꿈 문자를 삽입하더라도 줄바꿈이 일어나지 않는다.

  이는 입력한 \n을 \\n으로 인식해 작성한 그대로 화면에 출력하기 때문이다.

 

 

해결방법

 

1. Replace함수 사용

 

public class SignScript : MonoBehaviour
{
    public string text;
    // Start is called before the first frame update
    void Start()
    {
        text = text.Replace("\\n", "\n");
    }
}

  \\n을 \n으로 치환하면, 원래 역할인 줄바꿈을 당연히 잘 수행한다.

  하지만...

  • \t, \r 등 사용하는 특수문자마다 다 replace를 해줘야 한다
  • 정말로 화면에 "\n" 문자가 찍혀야 한다면 방법이 없다

  이런 문제점이 발생한다

 

 

2. TextArea 설정

 

public class SignScript : MonoBehaviour
{
    [TextArea]
    public string text;
}

  string 위에 [TextArea]를 선언하면, Unity의 Text입력부분이 여러줄 입력 가능한 큰 공간이 된다.

 

  이 공간에서는 Enter로 줄바꿈 입력이 가능하니 있는 그대로 입력해 사용할 수 있다.

 

※ 주의사항

  TextArea를 붙였다가 제거한 경우, 원래의 한줄 Text로 돌아오며 기존 입력의 최상위 한줄만 보이게 된다.

  하지만 실제로는 입력했던 값들이 다 그대로 남아 있으니, 제대로 삭제하지 않으면 2번째 줄부터는 그대로 유지되게 된다.

+ Recent posts