首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Unity 180旋转,用于Texture2D,或者两者都翻转

Unity 180旋转,用于Texture2D,或者两者都翻转
EN

Stack Overflow用户
提问于 2016-03-12 05:56:20
回答 3查看 12.8K关注 0票数 4

我只需要一点帮助。我正在将png加载到Texture2D中,并使用我找到的以下脚本将其翻转到y轴上。我现在需要把它翻转到x轴上。我知道稍微修改一下就可以了,但是我还没能得到我想要的结果。

代码语言:javascript
运行
复制
    Texture2D FlipTexture(Texture2D original){
    Texture2D flipped = new Texture2D(original.width,original.height);

    int xN = original.width;
    int yN = original.height;

    for(int i=0;i<xN;i++){
        for(int j=0;j<yN;j++){
            flipped.SetPixel(xN-i-1, j, original.GetPixel(i,j));
        }
    }

    flipped.Apply();

    return flipped;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-12 06:12:06

假设"pix“是一个png,

代码语言:javascript
运行
复制
Texture2D photo;
Color[] pix = photo.GetPixels(startAcross,0, 256,256);
// (256 is just an example size)

这完全将png旋转180度。

代码语言:javascript
运行
复制
System.Array.Reverse(pix, 0, pix.Length);

这恰好是PNG围绕直立轴的镜像

代码语言:javascript
运行
复制
        for(int row=0;row<256;++row)
            System.Array.Reverse(pix, row*256, 256);
票数 8
EN

Stack Overflow用户

发布于 2016-03-12 06:17:35

代码语言:javascript
运行
复制
Texture2D FlipTexture(Texture2D original, bool upSideDown = true)
{

    Texture2D flipped = new Texture2D(original.width, original.height);

    int xN = original.width;
    int yN = original.height;


    for (int i = 0; i < xN; i++)
    {
        for (int j = 0; j < yN; j++)
        {
            if (upSideDown)
            {
                flipped.SetPixel(j, xN - i - 1, original.GetPixel(j, i));
            }
            else
            {
                flipped.SetPixel(xN - i - 1, j, original.GetPixel(i, j));
            }
        }
    }
    flipped.Apply();

    return flipped;
}

要调用它:

FlipTexture(camTexture, true); //颠倒

FlipTexture(camTexture, false); //Sideways

票数 3
EN

Stack Overflow用户

发布于 2019-06-07 20:38:45

这会将纹理颠倒:

代码语言:javascript
运行
复制
int width = texture.width;
int height = texture.height;
Texture2D snap = new Texture2D(width, height);
Color[] pixels = texture.GetPixels();
Color[] pixelsFlipped = new Color[pixels.Length];

for (int i = 0; i < height; i++)
{
    Array.Copy(pixels, i*width, pixelsFlipped, (height-i-1) * width , width);
}

snap.SetPixels(pixelsFlipped);
snap.Apply();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35950660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档