2017-11-08 1 views
1

내 게임에서 나무의 색상을 변경하려면 트로피를 클릭해야하는 미니 태스크가 있습니다. 색상이 사이에 동일하다고유니티가 약간 잘못된 재료 색을 반환합니다.

enter image description here

내가 두 번 확인했습니다 나는 색상의 두 배열을 가지고, 하나는 가능한 모든 색상과 다른 하나를 포함하는 배열은 다음과 같이 네 가지 색상 (답)가 포함되어있다 두 개의 배열. 예를 들어, Colors-array의 보라색은 에서 보라색으로 정확하게 r, g, b &과 같은 값을 가지며, 입니다.

트로피가 올바른 색인지 확인하려면 해당 이미지를 반복하여 재료 색을 잡으십시오. 그렇다면 나는 그 색깔을 Right Order-array에 대해 확인합니다. 그러나 그것은 꽤 효과적이지 않습니다. 예를 들어 첫 트로피는 정확해야 자주색이지만, 어떤 이유로 유니티 제외보다 약간 다른 재질 색상을 반환하기 때문에하지 때 : 왜 이런 일

enter image description here

희망 누군가는 알고있다.

+0

자료가 동일하거나 다를 수 있습니까? 보라색의 경우, Color array와 Right Order array에서 말하고 싶습니다. 그들은 자료를 공유합니까? – Thalthanas

+0

두 배열 중 재료 색상이 "공용 색상 [] 색상"이 아닙니다 – Jonathan

+0

트로피의 재질 색상과 색상 배열을 비교합니다. 첫 번째 로그는 트로피의 재료 색에 속하며 두 번째 로그는 배열에 있습니다. – Thalthanas

답변

1

당신이 말할 때, 정확히 같은 색이라면, 정확한 값이 아닌 색 검사기의 rgb 값을 말하는 것으로 가정합니다.

이제 다른 색상 값을 유발할 수있는 것이 무엇인지 알 수 없지만 가장 가까운 정수로 반올림 한 후 값을 비교하는 확장 방법을 작성할 수 있습니다.

public static class Extensions 
{ 
    public static bool CompareRGB(this Color thisColor, Color otherColor) 
    { 
     return 
      Mathf.RoundToInt(thisColor.r * 255) == Mathf.RoundToInt(otherColor.r * 255) && 
      Mathf.RoundToInt(thisColor.b * 255) == Mathf.RoundToInt(otherColor.b * 255) && 
      Mathf.RoundToInt(thisColor.g * 255) == Mathf.RoundToInt(otherColor.g * 255); 
    } 
} 

사용 :이 도움이

Color red = Color.Red; 
red.CompareRGB(Color.Red); // true; 
red.CompareRGB(Color.Green); // false; 

희망.

0

팔레트를 사용합니다. 이것은 단순히 사용할 수있는 모든 색상의 배열입니다 (이걸 가지고있는 것처럼 들리 네요). 각 "트로피"에 대해이 배열에 INDEX를 기록하고 동시에 렌더러에 색상을 지정합니다. 또한 렌더러에 색상을 지정하는 동시에 각 "버튼"에 대한 색인을 기록하십시오.

그러면 팔레트 색인 값 (단순한 정수)을 비교하여 색상이 일치하는지 간단히 확인할 수 있습니다.

관련 문제