2016-08-11 3 views
0

그래서 버튼을 사용하여 색상을 변경할 수있는 2D 객체가 있으며 각 버튼은 객체의 스프라이트를 변경합니다. 나는 빨강, 주황, 노랑, 초록, 파랑, 자주색을위한 스프라이트를 가지고있다.RGB의 색상이 올바르지 않습니다. Unity C#

이제 2D 오브젝트의 스프라이트가 무엇이든 동일한 색상으로 startColor 속성을 변경하려는 파티클 시스템 (앞에서 설명한 오브젝트의 아이)이 있습니다. 내가 RGB에서 만들려고 해요

 var sprite = gameObject.GetComponent<SpriteRenderer>().sprite; 
     var startColor = gameObject.transform.GetChild(0).gameObject.GetComponent<ParticleSystem>().startColor; 

     if (sprite == red) startColor = new Color(255, 29, 0); 
     else if (sprite == orange) startColor = new Color(254, 32, 0); 
     else if (sprite == yellow) startColor = new Color(254, 215, 0); 
     else if (sprite == green) startColor = new Color(0, 254, 32); 
     else if (sprite == blue) startColor = new Color(0, 37, 254); 
     else if (sprite == purple) startColor = new Color(178, 0, 255); 

     gameObject.transform.GetChild(0).gameObject.GetComponent<ParticleSystem>().startColor = startColor; 

모든 새로운 색상() : 나는 (당신의 스프라이트를 변경할 수있는 2D 객체에 첨부)이 코드를 사용하고 있습니다. 그래서 모든 색상 스프라이트의 RGB 값을 가져 와서 플러그인했습니다. 코드를 실행하면 입자의 색상이 오브젝트의 스프라이트 색상과 일치하지 않습니다.

NOTES : 나는 이것을 안드로이드에서 돌리고 있는데, 파티클 시스템의 재질은 흰색이므로 색조가 없어야합니다.

색상 스프라이트의 RGB 값을 5 번 이상 넣었습니다. 하지만 스프라이트와 일치하지 않습니다! 내가 무엇이 잘못 됐는지 모르겠다. 칼라 스프라이트 이미지를 첨부해야한다면 그냥 물어 보라.

+0

코드를 정리하십시오. 그대로 읽을 수 있습니다. sprite = gameObject.GetComponent (). sprite;' –

+0

변수에'gameObject.GetComponent (). sprite'를 저장할 때마다 동일한 스프라이트를 다시로드 할 필요가 없습니다. 당신은 색깔을 얻습니까? –

+0

'gameObject.transform.GetChild (0) .gameObject'를 변수에 저장할 수도 있습니다. 그대로, 코드를 읽을 수 없습니다 –

답변

5

Color() constructor을 잘못 사용했습니다. 문서를 참고하면 생성자의 매개 변수는 [0,1]의 범위에서 값을 플로팅해야합니다. 사용자가 제공하는 적절한 값을 계산하지 않으려면, 단지 255을 분할 : 또는

new Color(0, 37/255f, 254/255f); 

, 당신은 [0255]의 범위 INT 값을받는 Color32() constructor 사용할 수 있습니다

new Color32(0, 37, 254); 

ColorColor32은 암시 적으로 서로 변환 될 수 있으므로 전송 문제는 걱정하지 않아도됩니다. 희망이 도움이! 궁금한 점이 있으면 알려주세요.

+2

'new Color (0, 37/255F, 254/255F);'* 정수 * 나눗셈을 방지하기 위해 –

+0

@DmitryBychenko 감사합니다! 좋은 캐치, 그렇지 않으면 예상치 못한 결과가 발생할 수 있습니다. – Serlite

+0

그러면 생성자의 결함처럼 보입니다. 그러면 ArgumentOutOfRangeException이 발생합니다. – Stijn

관련 문제