■ 2D Sprite Color 변경

 

지난번에 3D Object 에 이어 2D 에서는 Sprite Color 변경을 어떻게 할까?

 

결론부터 말하면, 

3D 오브젝트는 Material을 생성해서 변경해줘야 했지만, 

Sprite에 직접 접근하여 색을 변경한다. 

 

보통 2D 같은 경우 이미지 파일들을 많이 쓰기 때문에 색을 직접적으로 변경해야 하는 경우는 

그리 많아 보이지 않지만, 2D 퍼즐 게임같은 것을 만들때는 일부 필요할 수도 있을 것 같다.

 

그럼 한번 만들어보자

유니티 에디터에서 변경해보고, 스크립트로도 변경을 해보자.

 

2D Project를 새로 만들자.

 

2D Project

하이어라키 창에서 마우스 우클릭 → 2D Object → Sprite 를 선택해 준다.

 

Sprite 생성

 

그리고 가면 유니티 에디터 하이어라키 창에 Sprite 가 하나 생성된다. 

원하는 이름으로 바꿔주고 (나는 'Color'로 바꿨음) Scale을 X : 10, Y : 10 으로 바꾸고,

SpriteRenderer의 Sprite를 Background로 바꿔보자.

 

Sprite 설정

그러면 씬뷰에서는 보이지 않던 이미지가 아래와 같이 보이게 된다.

 

씬뷰에서 보이게 된 Sprite 2D 오브젝트

Sprite Renderer 의 Color를 클릭하고 원하는 색으로 바꿔주면 색이 변경된다.

 

유니티 에디터로 색 변경 완료

 

 

■ 스크립트로 Sprite 색 변경

 

2D Object Sprite는 스크립트로 어떻게 색 변경을 할까?

C# Script를 생성하고 아래와 C# Script를 Sprite 오브젝트에 드래그 해서 넣고,

아래와 같이 스크립트를 작성해 보자.

 

 
using UnityEngine;
 
public class ChangeColor : MonoBehaviour
{
    SpriteRenderer sprite;
    void Start()
    {
        sprite = gameObject.GetComponent<SpriteRenderer>();
    }
 
    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            sprite.color = Color.red;
        }
    }
}
cs

 

코드를 간단하게 살펴보면

 

1. Start 함수에서 sprite 라는 변수에 SpriteRenderer 컴포넌트를 넣어 주었다. 

2. Update 함수에서 마우스 왼쪽 버튼이 클릭되면 빨간 색으로 변하도록 해주었다.

 

Scripte로 색전환

 

3D와 마찮가지로 문자로 지원하는 색은 총 10가지이며,

동일하게 RGB를 이용하여 색을 전환할 수 있다.

(지원하는 색 종류는 지난 블로그를 참조 바란다.)

 

 

■ 3D 오브젝트 색 표현의 원리

 

동 내용은 내가 겪은 일화로, 재미로 봐주길 바란다. 

초보자들에게는 유익한 정보가 될 수도 있다고 생각한다.

 

처음 유니티 공부를 시작할 때, 여러 온라인상의 강좌들이나 책에서 봤을 때

일단 부딪혀서 실력이 는다는 이야기를 많이 들었다. 

그래서 나도 일단 부딪혔다. 공부하면서 내가 생각한 게임을 만들기 시작했다. 

 

왜 그렇게 작업을 했는지 자세히 기억이 나지는 않지만,

2D 프로젝트에 3D 오브젝트를 넣어서 작업했다. 

길찾기 로직인 3D의 Nav Mesh 와 2D A* 알고리즘 사이에서 왔다갔다 하면서

그렇게 된 것이 아닌가 싶다.

 

아무튼, 

마구잡이로 작업을 하다가 2D Project 로 이미지들을 생성하고 3D Object 들을 나열했는데,

3D 오브젝트들이 죄다 까맣게 나온다.

 

이걸로도 몇시간을 허비했는데,

해결방안은 바로 '빛' 이었다. 

 

2D Project와 3D Project를 처음 시작하게 되면 아래와 같이 창이 뜬다.

 

3D Project 시작화면

 

2D Project 시작화면

차이점을 찾으셨나요?

하이어라키 창을 좀 더 자세히 보도록 하죠.

 

3D Object 하이어라키
2D Project 하이어라키

 

3D Project에는 Directional Light 가 기본으로 생성이 되고, 

2D Project에는 카메라만 생성이 되고 Directional Light 가 생성되지 않습니다. 

이말은 즉, 2D는 빛이 필요없다는 얘기가 되겠고, 

3D에서는 빛이 필요한 존재라는 이야기죠.

 

지난 블로그에 올렸던 씬뷰로 비교를 해보겠습니다.

 

Capsule 옆에 Sprite 를 하나 생성했습니다.

 

3D Project 안의 2D Sprite

여기서 빛을 제거해 보겠습니다.

어떻게 될까요?

 

빛을 없애니 3D Object 들은 모두 블랙죠가 되었다.

3D 오브젝트들은 빛과 함께 사라져 버렸습니다.

바닥 오브젝트인 Plane도 3D Object로 같이 블랙으로 변했습니다.

여기서 Light 만 살려주면 다시 나타나게 됩니다.

 

제가 겪은 이러한 초보적인 실수들에 대해서 하나씩 짬짬이 공유하도록 하겠습니다.

 

감사합니다.

+ Recent posts