유니티 큐브 색 변경 - yuniti kyubeu saeg byeongyeong

3D 오브젝트 Color 변경

내가 처음 유니티를 공부하면서 책도 찾아보고 유튜브도 돌아다니며 공부하다가, 

처음으로 띵하고 막혔던 부분이 게임 도중 어떤 이벤트가 발생 시

오브젝트의 색깔을 바꾸고 싶었는데 이 부분을 엄청나게 헤매었던 기억이 있다.

그래서 이 글에서는

유니티 창에서의 3D Object Color 변경 방법과 

Script 상에서의 변경 방법을 알아보고자 한다.

■ Unity 창에서의 3D 오브젝트 Color 변경

유니티를 열어 3D Project를 생성하고, Capsule과 Plane을 생성해 보자.

생성된 오브젝트 중 Capsule의 색을 빨간색으로 변경해 보자.

유니티 큐브 색 변경 - yuniti kyubeu saeg byeongyeong
3D 오브젝트 Capsule 과 Plane 생성

생성 후 Project 창에서 우클릭 → Create → Material을 선택한다.

유니티 큐브 색 변경 - yuniti kyubeu saeg byeongyeong
Project 창에서 우클릭 → Create → Material 선택

아래와 같이 파란 동그라미 아이콘이 생성될 것이다.

유니티 큐브 색 변경 - yuniti kyubeu saeg byeongyeong
Material 아이콘

Material의 색을 빨강으로 변경할 것이기에 이름을 Red로 바꿔 봤다.

Material을 클릭해보면 인스펙터 창에 Main Maps 가 보일 것이다. 

Main Maps 바로 밑에 Albedo라고 하여 네모난 색깔 창과 스포이트 모양이 보일 것이다.

스포이드 모양 옆에 네모를 클릭해보자.

아래와 같이 RGB 색을 고를 수 있는 창이 뜬다.

이 중 자신이 Capsule에 적용하고 색깔을 지정한다. 필자는 빨간색으로 선택했다.

유니티 큐브 색 변경 - yuniti kyubeu saeg byeongyeong
Material Inspector 창

Material의 색을 변경했으면 색을 Capsule 에 적용해보자.

Material을 드래그하여 Capsule에 갖다 넣자.

유니티 큐브 색 변경 - yuniti kyubeu saeg byeongyeong
3D Object에 Material 적용

아래와 같이 Capsule의 색이 변경된 것을 확인할 수 있다.

유니티 큐브 색 변경 - yuniti kyubeu saeg byeongyeong
Capsule 색상변경 완료

■ 스크립트(Script)로 색 변경하기

게임을 만들다 보면 처음 지정된 색을 게임 끝까지 가져가는 경우도 있지만, 

어떤 이벤트나 주변 상황에 따라 오브젝트의 색을 변경해야 할 때가 있다.

나는 기본이 없는 백지상태였기 때문에 이것을 해결하는데만 며칠을 고생했다.

간단하게 마우스 클릭 시 Capsule 색이 빨간색 ↔ 파란색으로 변하는 스크립트를 작성해 보자.

프로젝트 창에 마우스 우클릭 → Create → C# Script를 선택해서 C# 스크립트를 생성한다.

C# 스크립트 이름을 'ColorChange'로 변경하고 Capsule 오브젝트에 드래그하여 끌어다 넣는다.

유니티 큐브 색 변경 - yuniti kyubeu saeg byeongyeong
스트립트 삽입

그리고 스크립트를 열어보자.

간단하게 아래와 같이 코드를 입력한다.

using UnityEngine;

public class ColorChange : MonoBehaviour

{

Renderer capsuleColor;

void Start()

{

capsuleColor = gameObject.GetComponent<Renderer>();

}

void Update()

{

if (Input.GetMouseButtonDown(0))

{

if(capsuleColor.material.color != Color.blue)

{

capsuleColor.material.color = Color.blue;

}

else

{

capsuleColor.material.color = Color.red;

}

}

}

}

cs

스크립트를 간단히 살펴보면, 

1. Start 함수 안에 capsuleColor라는 변수에 Renderer Renderer 컴포넌트를 지정해 주었다. 

2. 업데이트 문에서는 마우스 버튼의 입력을 감지한다.

  - 버튼 입력이 감지가 될 경우 material의 색이 파란색이 아니라면 파란색으로,

  - 파란색일 경우 빨간색으로 변환되도록 입력하였다. 

저장하고 unity를 돌려보면 마우스 클릭 시마다 빨강, 파랑으로 왔다 갔다 하는 것을 볼 수 있다.

유니티 큐브 색 변경 - yuniti kyubeu saeg byeongyeong
처음 무색에서 빨간색, 파란색으로 변경

■ 유니티에서 문자로 지원하는 색상

위 Script에서 보셨듯이,

Color.red를 치면 빨간색이 되고, Color.blue를 치면 파란색이 됩니다. 

이렇게 RGB 코드가 아닌 문자로 입력할 수 있는 Color는  투명까지 포함해서 총 10가지입니다.

아래 문자들을 Color. 뒤에 연결하여 적으면 해당되는 색깔이 나옵니다.

유니티 큐브 색 변경 - yuniti kyubeu saeg byeongyeong
Unity에서 지원하는 문자 Color

여러분, 위의 Color를 지원하는 문자 중 혹시 이상한 점 발견하셨나요?

회색이 grey, gray 두 가지로 입력할 수 있게 되어 있네요.

그렇다면 문자열 외에 다른 색은 어떻게 표현할 수 있을까요?

아래 큰 따옴표(" ") 안의 노란색 숫자 부분에 RGB 숫자를 0~255까지 입력하면 됩니다.

gameObject.GetComponent<Renderer>().material.color = new Color("0~255"/255f , "0~255"/255f, "0~255"/255f);

cs

예를 들면 white 같은 경우 RGB가 (255, 255, 255) 이니까

이와 같이 입력하면 흰색으로 변경됩니다.