比较对象的材质颜色和背景颜色

时间:2020-10-17 11:58:59

标签: c# unity3d

您好,我正在尝试比较对象的材质颜色和背景颜色。但这在if语句中不起作用。

void Update() {
        if(Input.GetMouseButtonDown(0)) {
            if(currentItem != null) {
                if(currentItem.CompareTag("Item")) {
                    print(currentItem.GetComponent<MeshRenderer>().material.color);
                    print(Camera.main.backgroundColor);
                    if(currentItem.GetComponent<MeshRenderer>().material.color == Camera.main.backgroundColor) {
                        Destroy(currentItem);
                        Camera.main.GetComponent<GameManager>().IncreaseScore();
                    } else {
                        Camera.main.GetComponent<GameManager>().GameOver();
                    }
                }
            }
        }
    }

当我尝试打印颜色时,它们看起来一样,但是在if语句中返回false。

1 个答案:

答案 0 :(得分:1)

当Color对象格式化组件时,可能会有小的差异。 尝试分别打印每个颜色成分。

public static bool ColorEquals(Color a, Color b, float tolerance = 0.04f) 
{
    if (a.r > b.r + tolerance) return false;
    if (a.g > b.g + tolerance) return false;
    if (a.b > b.b + tolerance) return false;
    if (a.r < b.r - tolerance) return false;
    if (a.g < b.g - tolerance) return false;
    if (a.b < b.b - tolerance) return false;
 
    return true;
}