2014. 4. 3. 15:00

'3D Text'를 사용하려고 화면에 올려 놨더니....

 

위 스크릿 샷을 보면 같은위치에 있는 3d text를 다른 방향에서 보았을때 항상 다른 오브젝트를 무시하고 화면에 텍스트가 출력되는걸 볼 수 있습니다.

이것만 봐서는 '3D Text'의 기본 동작이 게임 오브젝트(Game Object)가 아니라 'UI'인것 같습니다.

 

우리가 원하는건 '3d text'가 다른 오브젝트들 처럼 다른 오브젝트 뒤로 가면 뒤로 간 부분은 보이지 않았으면 하는 것인데 말이죠.

이렇게 말이죠.

 

 

1. 해결방법

검색을 해보니 '3D Text'의 기본 쉐이더는 'GUIText'라고 합니다.

어쩐지 -_-;;

 

결국 새로운 쉐어더를 만들어야 하나 봅니다.

 

다행히 이것을 설명한 자료를 찾았습니다.

참고 : 유니티3D 위키 - 3DText

 

여기의 설명에 따르면 쉐이더를 만들고 폰트 텍스쳐를 지정하면 된다고 합니다.

 

 

1-1. 쉐이더(Shader) 만들기

Project > Create > Shader

을 선택하여 새로운 쉐이더를 만듭니다.

전 'My3DText'로 만들었습니다.

 

쉐이더코드는 다음과 같이 넣습니다.

Shader "Custom/My3DText" 
{
	Properties { 
	   _MainTex ("Font Texture", 2D) = "white" {} 
	   _Color ("Text Color", Color) = (1,1,1,1) 
	} 

	SubShader { 
	   Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } 
	   Lighting Off Cull Off ZWrite Off Fog { Mode Off } 
	   Blend SrcAlpha OneMinusSrcAlpha 
	   Pass { 
	      Color [_Color] 
	      SetTexture [_MainTex] { 
	         combine primary, texture * primary 
	      } 
	   } 
	} 
	
}

 

 

1-2. 메트리얼(Material) 만들기

Project > Create > Material

을 선택하여 새로운 텍스쳐를 만듭니다.

여기서도 'My3DText'로 이름을 만들었습니다 ㅎㅎㅎ

 

(1) 쉐이더를 'My3DText'로 선택 합니다.

 

 

(2) 폰트를 추가 합니다.

프로젝트에 폰트를 추가 합니다.

전 나눔폰트를 추가 했습니다.

 

폰트를 추가한후 폰트 텍스쳐(Font Texture)가 생성되었는지 확인 합니다.

만약 생성이 되지 않았다면 다른 폰트 파일을 써야 할듯 하네요.

 

추가한 폰트는 '3D Text'에 지정해주셔야 합니다.

여기서 주의 해야 할것이 폰트를 먼저 바꿔주지 않으면 메트리얼이 적용되지 않는 경우가 있습니다.

(버그인듯 하네요)

먼저 폰트를 적용한후 매트리얼을 적용해 주세요.

 

 

(3) 텍스쳐 지정하기

 

아까만든 메트리얼에 폰트 텍스쳐를 지정합니다.

드래그를 해서 넣어도 됩니다.

 

1-2. 메트리얼 적용

이제 '1-2.'에서 만든 메트리얼을 '3D Text'에 적용 합니다.

 

2. 테스트

이제 매트리얼을 '3D Text'에 적용하고 테스트를 해봅시다.

마우스로 클릭한 상태로 카메라를 움직여 보세요.

(오른쪽 클릭도 가능합니다.)

 

마무리

그런데 이게 문제가 폰트칼라가 먹질 않습니다 ㅡ.-;;

매트리얼에 폰트칼라를 줬다가는 모두다 같은 색이 되죠 ㅎㅎㅎㅎ

이건 좀 생각 해봐야 할것 같네요.