반응형

unity/c# 스크립트에서 outline 색깔과 투명도를 바꾸는 방법

그리고

new Color(r, g, b) 로 했을 때 흰 색이 나오는 등 의도한 대로 적용이 되지 않을 경우 해결방법

 

unity 게임 개발 중 클릭 시 텍스트 아웃라인(outline)의 색깔을 변경해줘야 하는 일이 있었습니다.

 

뭐 이것만 고민하며 시간을 보낸건 아니지만 이것저것 다 합쳐서 두 시간 가량 제대로된 일을 하지 못하다 결국 해결을 했습니다!!

여기저기 구글링을 다 하며 짬뽕한 내용을 공유하겠습니다,

 

outline의 색깔과 투명도를 주는 방법은 

outline.effectColor = 색상지정(투명도 포함)

을 통해서 가능합니다.

 

투명도를 주는방식은 

var color = new Color(r, g ,b); 선언 후

color.a = 원하는 투명도 ( float or 투명도 / 255f )

로 설정이 가능합니다.

 

그리고 new Color(r, g, b)로 했을 때 인식이 제대로 되지 않는 경우는 

color = new Color( r / 255f, g / 255f, b / 255f); 와 같이 255f를 분모로 두면 정상적으로 작동합니다.

예시는 아래 코드에서 확인이 가능합니다.

Color color;

if (btnObj.name == selectedStageName)
{
  selectedStageName = "";
  color = new Color(139/255f, 192/255f, 244/255f);
  color.a = 96 / 255f;
  btnObj.GetComponentsInChildren<Outline>()[0].effectColor = color;
  btnObj.GetComponent<Image>().sprite = stagePanel;
  btnObj.GetComponentsInChildren<Image>()[2].sprite = stageInfo;
}

위의 코드는 버튼에서 outline을 찾아, 그 색깔을 바꾸고 sprite를 바꿔치는 코드입니다.

 

요게
요렇게

두 시간의 고생.. ㅎ

여러분들은 이렇게 고생하지마세요~~!!!

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기