게임 개발/Unity

[유니티 C#] 텍스트 박스 가변 - ContentSizeFitter 올바르게 사용하기

Heesuk Lee 2024. 9. 2. 15:00

 

 

유니티를 사용하다보면 텍스트에 맞춰서 박스크기가 가변되는것을 원할때가 있다.

가장 많이쓰이는 텍스트 가변 이름 박스

 

 

여기서 우리는 흔하게 사용하는것이 ContentSizeFillter이다.

하지만 사용해본사람은 알것이다. 

텍스트 컨포넌트가 있는 오브젝트의 contentsizefitter 에러메세지

 

배경박스와 텍스트컨포넌트 둘다 ContentSizeFitter를 넣어야지 돌아가는데 꼭 이런 에러메세지가 있어서 신경쓰인다.

심지어 실시간으로 가변됐을때 이전크기로 적용되어서 이런 사태가 발생한다.

 

로직상 텍스트에 맞게 사이즈가 가변되어야하는데 이전크기로 잡힌다.

 

그래서 다양한 방법을 사용했었지만, 경험상 가장 깔끔하고 유니티에서 가이드해주는 방식으로 접근하고자한다.

 

유니티에서 위와같은 상황에서 가이드하는 메뉴얼

https://docs.unity3d.com/kr/current/Manual/HOWTO-UIFitContentSize.html

 

UI 요소를 콘텐츠 크기에 맞추기 - Unity 매뉴얼

일반적으로 사각 트랜스폼을 사용하여 UI 요소를 배치하는 경우 포지션 및 크기가 수동으로 지정됩니다(선택적으로 부모 사각 변환을 사용하여 늘릴 동작 포함).

docs.unity3d.com

 

 

 

방법은 의외로 별것없다.

 

부모 오브젝트 (텍스트 박스 배경있는 오브젝트)

ContentSizeFitter와 Layout Group을 가지고있고 

ControlChildSize와 Child Force Expand가 원하는 방향으로 활성화 되어있으면 된다.

여기는 원래도 이렇게 되어있었을것이다.

 

자식 오브젝트 (텍스트 컨포넌트가 있는 오브젝트)

ContentSizeFitter 대신에 Layout Element가 들어간다.

그리고 FlexibleWidth 혹은  FlexibleHeight를 활성화시키고 1로 두면된다고 한다.

이거하나면 끝!

 

 

 

 

위와같이 설정하면 기존처럼 가변되는 텍스트박스가 구현된다!

심지어 경고메세지도 없고 가변이 어긋하는 이슈도 함께 해결이된다!

그동안 잘못사용해온것인가!

반응형