如何统一比较两个精灵纹理

时间:2018-07-27 09:58:05

标签: unity3d sprite

我需要比较两个精灵纹理,以了解这两个精灵是否属于同一图像。这些纹理是从URL加载的。预先感谢。

以下是获取精灵纹理的示例代码:

    WWW imageLink = new WWW(imageUrl);

    var spriteTexture = imageLink.texture;

在我的情况下,同一张图片带有两个不同的网址。加载url后,需要识别那些纹理是否属于同一图像。请提出任何想法。

1 个答案:

答案 0 :(得分:1)

没有一种简单的工具可以比较两种纹理,但是幸运的是,编写一种纹理很容易。 Texture2D.GetPixels()方法将为您提供一个Color []数组,该数组表示一个扁平的2d像素颜色数组。从底部到顶部开始,每行像素将一个接一个地放置。比较两个数组应该证明两个纹理是相同的。我尝试了这段代码:

private bool CompareTexture (Texture2D first, Texture2D second)
{
    Color[] firstPix = first.GetPixels();
    Color[] secondPix = second.GetPixels();
    if (firstPix.Length!= secondPix.Length)
    {
        return false;
    }
    for (int i= 0;i < firstPix.Length;i++)
    {
        if (firstPix[i] != secondPix[i])
        {
            return false;
        }
    }

    return true;
}

使用您的代码,您只需要调用:

WWW imageLink = new WWW(imageUrl1); //first image URL
WWW imageLink2 = new WWW(ImageUrl2); //second image URL

if (CompareTexture(imageLink.texture, imageLink2.texture) {
....
}

比较两种纹理。