2.1 NGUI UISprite(스프라이트)

2. NGUI 위젯

 

1장에서 NGUI의 UI 시스템을 생성하고, 기본이 되는 컴포넌트들에 대해서 알아보았습니다.
2장에서는 NGUI의 주요 UI 위젯의 생성 방법 및 각 위젯들의 특성을 살펴보도록 하겠습니다.

 

2.1 UISprite (스프라이트)

먼저 NGUI의 기본 UI 위젯 중 하나인 스프라이트를 생성해 보겠습니다.
NGUI는 손쉬운 위젯 생성을 위해서 주로 사용되는 위젯들의 템플릿이 구성되어 있는 위젯 마법사를 제공합니다. 이를 이용해서 스프라이트 / 레이블 / 버튼 등의 UI 위젯을 쉽게 생성할 수 있습니다.

유니티 에디터 메뉴에서 NGUI -> Open -> Widget Wizard(Legacy) 메뉴를 선택합니다.
아래 그림과 같이 Widget Tool 창이 뜨는 데

Widget Tool window

 

이 툴을 이용해서 스프라이트 등 UI 위젯을 생성할 수 있습니다.
그런데 지금은 Atlas 와 Font 항목이 None인 상태이기 때문에, 각 항목을 설정해야 UI위젯을 생성할 수 있습니다.

Atlas는 스프라이트 등에 사용될 여러 이미지들을 하나의 큰 이미지로 합친 이미지입니다.
Font는 NGUI 레이블 등에서 사용되는, 화면에 글자를 표시할 때 사용되는 Font입니다.

NGUI에서는 유니티의 다이나믹 폰트와 Bitmap 폰트를 모두 지원 합니다. 하지만 유니티의 다이나믹 폰트의 경우 특정 안드로이드 기기에서 문제가 발생하는 부분이 있어 Bitmap 폰트가 주로 사용됩니다.

 

 

 

프로젝트 뷰에서 Assets -> NGUI -> Examples -> Atlases -> SciFi 폴더로 이동합니다.
SciFi Atlas.prefab 을 Widget Tool의 Atlas 항목으로 드래그, SciFi Font – Normal 폰트를 Font 항목으로 드래그 합니다.

set atlas and font paramter on the widget tool

 

이렇게 두 항목을 대입해주면 스프라이트 등 UI 위젯을 생성할 준비가 끝이 났습니다.
준비가 되었으니 스프라이트를 생성해 보겠습니다.

아래 그림과 같이 Template 항목은 Sprite를 선택하고, Sprite 항목은 Dark 를 선택해 줍니다.
그리고 Add To 버튼을 클릭하면 스프라이트 생성이 됩니다.

create a uisprite

 

그러면 하이어라키 뷰의 UIRoot 게임 오브젝트 밑에 Sprite 게임 오브젝트가 추가된 것을 확인할 수 있습니다.

uisprite in hierarchy view

 

지금 생성한 스프라이트 크기가 작기 때문에 크기를 200 x 200으로 크게 해보겠습니다.
Sprite 게임 오브젝트를 클릭한 상태에서 인스펙터 뷰에서 UISprite 컴포넌트의 Size 항목을 보면,
아래 그림과 같이 넓이와 높이 값을 설정할 수 있는 항목이 있습니다.

넓이 / 높이 항목에 각각 200 / 200을 입력합니다.

set size of uisprite

 

 

이제 씬 뷰 / 게임 뷰를 확인 해 보면 생성된 스프라이트를 확인할 수 있습니다.

uisprite in scene view and game view

NGUI에서 스프라이트, 레이블등은 위젯이라고 불립니다. 또한 모든 위젯은 공통 파라미터를 갖습니다.
스프라이트의 각 파라미터 내용을 살펴보기 전에 위젯의 공통 파라미터들부터 살펴 보도록 하겠습니다.

각 파라미터의 특성은 아래 표와 같습니다.

파라미터 설명
Pivot 스프라이트의 피봇을 설정하는 데 사용합니다.
Depth 스프라이트를 다른 위젯 앞 또는 뒤에 위치 시키는 순서를 정하는 데 사용합니다.
Depth 값이 클수로 앞에 위치하게 됩니다. Forward / Back 버튼을 이용해서 값을 조절하거나, Depth 값을 직접 입력할 수 있습니다.
Size 위젯의 크기를 설정합니다. 가로 / 세로 값을 설정할 수 있습니다.
Snap 버튼을 누르면 스프라이트 크기를 원래 크기로 되돌리는 Make-Pixel-Perfect 기능을합니다.
Aspect 위젯의 가로 / 세로 비율을 지정할 수 있습니다.
Free로 설정하면 비율을 지정하지 않고, Based on Width 는 위젯의 넓이 값을 기준으로 Based On Height 는 위젯의 높이 값을 기준으로, 설정한 비율을 유지하도록 가로 / 세로 값을 변경합니다.

 

스프라이트 생성하는 방법 및 위젯의 공통 파라미터에 대해서 살펴 보았습니다.
이번엔 스프라이트의 각 파라미터에 대해서 살펴 보겠습니다.

파라미터 설명
Atlas 스프라이트가 생성될 때 사용할 Atlas를 설정하는 데 사용합니다.
Sprite 설정된 Atlas에서 실제 사용할 이미지를 설정합니다.
Type 스프라이트 타입을 설정할 때 사용합니다. 스프라이트 종류는 총 5가지가 있습니다.
(Simple / Sliced / Tiled / Filled / Advanced 타입을 지원합니다.)
Flip 스프라이트를 좌우 또는 상하 등으로 반전을 시키려는 경우에 사용합니다.
(Horizontal / Vertical / Both 모드를 지원합니다.)
Color Tint 알파 값이 포함된 스프라이트 (위젯)의 색상을 지정할 때 사용합니다.

 

위에서 설명한 파라미터들 중 처음 두 파라미터는 스프라이트를 생성할 때 Widget Tool에서 설정한 Altas와 Sprite와 동일한 항목입니다.

NGUI 스프라이트의 Type항목을 눌러보면 4가지 메뉴가 나타납니다.
NGUI는 이 메뉴에서 확인할 수 있듯이 4가지 타입을 지원합니다.
(Advanced 타입은 Invisible / Sliced / Tiled 타입을 조합해서 사용할 수 있도록 제공하는 스프라이트 종류 입니다.)
각 스프라이트 타입의 특성에 대해서 살펴보겠습니다.

 

Simple Sprite

첫 번째 항목인 Simple 스프라이트는 위에서 이미 생성해 본 스프라이트 타입입니다.
Simple 스프라이트는 NGUI 스프라이트의 가장 기본이 되는 스프라이트 타입으로, 스프라이트에 사용된 이미지의 원본 크기 그대로 사용하는 경우에 주로 사용합니다.

따라서 원본 크기와 다르게 설정해야 하는 경우, 예를 들어 크기를 늘려야 하는 경우에는 원본 이미지의 해상도가 깨지는 경우가 발생할 수 있습니다.

Sliced Sprite

Sliced 스프라이트는 텍스쳐를 격자 무늬로 9등분해서 외곽의 형태를 유지하면서 크기를 조절할 수 있도록 구현된 스프라이트 입니다. 크기를 조절해도 해상도가 깨지지 않고 깨끗한 모습을 유지하는 특징이 있습니다.

Sliced 스프라이트는 아래 그림과 같이 이미지의 외곽 부분과 가운데 부분을 나눠서 설정하도록 되어 있습니다. 설정 값에 따라서 원본 이미지가 늘어나야 하는 경우 외곽 이미지의 크기는 늘리지 않고 가운데 부분만 늘리는 방식으로 이미지가 깨지지 않고 유지될 수 있도록 합니다.

setting border of the image

 

앞서 생성한 스프라이트와 같은 종류의 스프라이트를 생성하고 Simple Sliced 스프라이트의 차이를 보도록 하겠습니다.

diffence between simple sprite and sliced sprite

 

위의 그림에서 볼 수 있듯이 Simple 스프라이트의 경우 크기가 커진 경우에 텍스쳐의 외곽 부분도 같이 크기가 커지면서 이미지가 깨진 듯한 모습을 볼 수 있습니다.
반면에 Sliced 스프라이트는 외곽 부분이 원래의 모습을 유지한 채 크기가 커지기 때문에 이미지가 깨지지 않고 원래 모습을 유지한 것을 확인할 수 있습니다.

따라서 제작한 원본 이미지의 크기보다 크게해서 스프라이트를 사용해야 할 경우에 Sliced 스프라이트를 사용합니다.

 

 

Tiled Sprite

Tiled 스프라이트는 반복되는 패턴을 만들 때 사용하는 스프라이트 종류입니다 하나의 텍스쳐를 타일링해서 화면에 표현할 때 사용합니다.
직접 생성해서 확인해 보도록 하겠습니다.
유니티 에디터 메뉴에서 NGUI -> Open -> Widget Wizard(Legacy) 메뉴를 클릭합니다.
Widget Tool 창이 뜨면 아래 그림과 같이 Template 은 Sprite로 Sprite 항목은 Honeycomb으로 설정하고 AddTo 버튼을 이용해서 스프라이트를 생성합니다.

create a tiled sprite

 

스프라이트가 생성되면 하이어라키 뷰에서 생성된 스프라이트를 클릭하고 인스펙터 뷰의 Sprite Type을 Tiled로 설정합니다.

set sprite type to tiled

 

이제 씬 뷰에서 Sprite를 클릭한 상태에서 모서리 부분에 마우스를 클릭하고 크기를 늘려보면, 아래와 같이 텍스쳐 크기가 커지지않고 타일의 크기가 유지되면서 전체 스프라이트 크기가 커지는 것을 확인할 수 있습니다.

change sprite size in scene view

위의 그림에서 확인할 수 있듯이, 일정한 패턴을 반복시켜서 스프라이트를 표현하려고 할 때 Tiled 타입을 사용합니다.
Filled Sprite

Filled 스프라이트는 전체 스프라이트에서 일부만 그리거나, HP 게이지 등 스프라이트의 일부만 그리거나  전체를 조절해 가면서 스프라이트를 표현해야 할 때 유용하게 사용할 수 있는 스프라이트 종류입니다.
유니티 에디터 메뉴에서 NGUI -> Open -> Widget Wizard(Legacy) 메뉴를 클릭하고 스프라이트를 생성해 보겠습니다.

Widget Tool 창이 뜨면 아래 그림과 같이 Template 항목은 Sprite로 설정하고, Sprite 항목은 NGUI로 설정한 뒤에 AddTo 버튼을 이용해서 스프라이트를 생성합니다.

create a sprite with ngui image
이번에는 Sprite 항목을 NGUI로 설정해서 NGUI 마크가 화면에 나타나도록 했습니다.
생성된 스프라이트를 하이어라키 뷰에서 클릭한 상태에서 Sprite Type을 Filled로 변경합니다.

set sprite type to filled

 

이렇게 설정을 해준 뒤에 원래 모습을 확인해보고 일부만 그렸을 때의 모습도 확인을 해보겠습니다

result of sprite that is fully shown

현재는 아무 변화가 없이 이미지의 전체가 화면에 보이는 상태입니다. 값을 조절해서 이미지의 일부만 나타나도록 수정해 보겠습니다.
UISprite 컴포넌트의 Fill Amout 값을 0.4정도로 조절한 후에 결과를 확인해 보겠습니다.

set fill amount parameter to 0.4

Fill Amount를 0.4로 설정하면 아래 그림에서 확인할 수 있듯이 0.4 즉 전체의 40%만 화면에 그려진 것을 확인할 수 있습니다.

result that is shown only 40 percent of the sprite

Filled 스프라이트는 또한 화면에 스프라이트를 그리는 방향을 변경할 수 있습니다.
Filled 스프라이트는 총 5가지의 방향을 지원 합니다. (Horizontal / Vertical / Radial 90 / Radial 180 / Radial 360)

 

정리

NGUI UI 위젯 중 처음으로 스프라이트에 대해서 알아 보았습니다.
NGUI 스프라이트는 총 4가지 타입을 지원하고, 각 스프라이트는 대체로 아래와 같은 상황에 따라서 활용됩니다.

스프라이트 타입 설명
Simple 원본 이미지의 원래 크기 그대로 사용할 때 사용합니다.
Sliced 원본 이미지의 크기를 유지하지 않고, 크기 조절을 해야하는 경우에 사용합니다.
(텍스쳐의 크기를 늘려서 사용하는 경우에 주로 사용합니다.)
Tiled 원본 이미지를 타일링해서 스프라이트를 구성할 때 사용합니다.
Filled HP 게이지 등, 스프라이트의 일부만 그리거나 하는 등의 효과가 필요한 경우에 사용합니다.

 

스프라이트 마다 각 특성이 다르게 때문에 상황에 맞게 활용하시기 바랍니다

 

내용 끝까지 읽어주셔서 감사합니다.
배너 클릭은 저에게 많은 힘이 됩니다.
감사합니다 🙂

RonnieJ

프리랜서 IT강사로 활동하고 있습니다. 게임 개발, C++/C#, 1인 기업에 관심이 많습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Please turn AdBlock off

Notice for AdBlock users

Please turn AdBlock off