将纹理数组加载到Unity 4.6中的单个图像组件到网格布局中(使用uGUI)

时间:2015-07-08 05:30:56

标签: c# arrays image unity3d texture2d

我在尝试开发一个装载程序时遇到了很多麻烦,该装载程序抓取位于数组中的一组纹理并将它们填充到网格布局中。任何人都可以分享一些代码洞察或可能做到这一点的片段吗?

1 个答案:

答案 0 :(得分:0)

假设您想以下面的格式显示图像。您可以做的是将图像合并为一个大的Texture2D(但据我所知,图像大小不应超过2048x2048)

illustration

以下功能应该起作用:

private Texture2D ConcatTexture(Texture2D[,] textures, int imageWidth, int imageHeight)
{
    int rowCount = textures.GetLength(0);
    int columnCount = textures.GetLength(1);

    //Space allocation for the final texture
    Texture2D finalTexture = new Texture2D(columnCount * imageWidth, rowCount * imageHeight);

    for (int i = 0; i < rowCount; i++)
        for(int j=0 ; j < columnCount ; j++)
            finalTexture.SetPixels(j * imageWidth, (rowCount-i-1) * imageHeight, imageWidth, imageHeight, textures[i, j].GetPixels());

    return finalTexture;
}

您也可以编辑此代码,并在图像之间放置一些空格(如果它正是您要查找的内容)。