Version: 2020.3
public static byte[] EncodeToTGA (Texture2D tex);

参数

tex 要编码的纹理。

描述

以 TGA 格式对指定的纹理进行编码。

为了让此函数正确执行,必须在 texture import settings 中将纹理的 read/write enabled 标志设置为 true。

TGA 编码的纹理作为字节数组返回。您可以将编码的纹理存储为文件,也可以通过网络发送,无需进一步处理。

该函数仅适用于未压缩的非 HDR 纹理格式。

The encoded TGA data is not compressed and contains an alpha channel for RGBA32, ARGB32 textures, and no alpha channel for RGB24 textures. For single-channel red textures ( R8, R16, RFloat and RHalf ), the encoded TGA data will be in 8-bit grayscale.

// Saves screenshot as TGA file.
using UnityEngine;
using System.Collections;
using System.IO;

public class TGAScreenSaver : MonoBehaviour { // Take a shot immediately IEnumerator Start() { yield return SaveScreenTGA(); }

IEnumerator SaveScreenTGA() { // Read the screen buffer after rendering is complete yield return new WaitForEndOfFrame();

// Create a texture in RGB24 format the size of the screen int width = Screen.width; int height = Screen.height; Texture2D tex = new Texture2D(width, height, TextureFormat.RGB24, false);

// Read the screen contents into the texture tex.ReadPixels(new Rect(0, 0, width, height), 0, 0); tex.Apply();

// Encode the texture in TGA format byte[] bytes = tex.EncodeToTGA(); Object.Destroy(tex);

// Write the returned byte array to a file in the project folder File.WriteAllBytes(Application.dataPath + "/../SavedScreen.tga", bytes); } }