Unity Texture 2D相关操作

  • 保存Texture 2D到本地
    var bytes = tex2D.EncodeToPNG();
    // Application.dataPath为Asset文件夹路径
    File.WriteAllBytes(Application.dataPath + "/Resources/Test/SavedScreen2.png", bytes);
    
  • 旋转
    RotateTexture2D.RotateSquare(tex2D, 180.0f);
    
  • Texture转Texture2D
    RawImage的纹理类型是Texture
    Texture2D tex2D = tex as Texture2D;
    
  • Texture2D转Base64字符串
        public string Texture2DToBase64(Texture2D tex)
        {
            byte[] bytesArr = tex.EncodeToJPG();
            string strbaser64 = Convert.ToBase64String(bytesArr);
            return strbaser64;
        }
    
  • Base64字符串转Texture2D
    public Texture2D Base64ToTexture2D(string Base64Str)
    {
        Texture2D pic = new Texture2D(190, 190, TextureFormat.RGBA32, false);
        byte[] data = System.Convert.FromBase64String(Base64Str);
        pic.LoadImage(data);
        return pic;
    }
    
Unity中,Texture2D是一个用于存储纹理数据的对象,它通常用于渲染游戏中的贴图或者图像。如果你想改变Texture2D的颜色,有几种常见的做法: 1. **Color格子操作**:如果你的纹理是一张颜色格子图,可以获取每个像素的颜色值,然后应用一个新的颜色替换。你可以使用`GetPixel()`和`SetPixel()`方法。 ```csharp Color[] pixels = new Color[texture.width * texture.height]; texture.GetPixels(pixels); for (int i = 0; i < pixels.Length; i++) { pixels[i] = new Color(新红, 新绿, 新蓝); // 替换颜色 } texture.SetPixels(pixels); texture.Apply(); ``` 2. **Shader修改**:通过自定义Shader,可以在运行时对特定通道(如RGB)进行颜色变换。编写一个Shader并设置它作为纹理的Material的Shader属性。 3. **Texture2D转换**:使用`Texture2D.Apply()`方法结合一个色彩操作(如HSL调整、色彩平衡等)的计算函数,创建一个新的Texture2D。 ```csharp public static Texture2D ChangeColor(Texture2D original, Color color) { int width = original.width; int height = original.height; byte[] pixelData = new byte[width * height * 4]; original.GetRawData(pixelData, 0); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { int index = (y * width + x) * 4; pixelData[index + 0] = // R通道的新值 pixelData[index + 1] = // G通道的新值 pixelData[index + 2] = // B通道的新值 pixelData[index + 3] = // A通道的新值 } } Texture2D newTexture = new Texture2D(width, height, TextureFormat.RGBA32, false); newTexture.LoadRawTextureData(pixelData); return newTexture; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值