Texture2D.SetPixels32
Declaration
public void SetPixels32(Color32[] colors, int miplevel = 0);Параметры
| Параметр | Описание |
|---|---|
| цвета | Массив используемых цветов пикселей. Это изображение 2D, сплоченное до 1D массива. |
| мипуровень | Уровень mipmap для записи colors. Диапазон 0 до текстуры Texture.mipmapCount. Значение по умолчанию 0. |
Описание
Задает цвета пикселей для всего уровня mipmap.
Этот метод устанавливает пиксельные данные для текстуры в памяти CPU. Texture.isReadable должно быть true, и вы должны вызвать Apply после SetPixels32 для загрузки измененных пикселей в GPU.colors должен содержать пиксели слой за слоем начиная с передней части текстуры. Каждый слой должен содержать пиксели строка за строкой, начиная с нижней левой части текстуры. Размер массива должен быть равен ширине × высоте × глубине уровня mipmap.
Единый призыв к SetPixels32 обычно быстрее, чем несколько вызовов SetPixel, особенно для больших текстур.SetPixels32 может быть медленнее, чем некоторые другие методы текстуры, потому что он преобразует Color32 структуру в формат, используемый текстурой. Чтобы задать данные пикселей быстрее, используйте SetPixelData вместо этого.
Вы можете использовать SetPixels32 со следующим текстом: текстурные форматы:
- Alpha8
- ARGB32
- ARGB4444
- BGRA32
- R16
- R16_SIGNED
- R8
- R8_SIGNED
- RFloat
- RG16
- RG16_SIGNED
- RG32
- RG32_SIGNED
- RGB24
- RGB24_SIGNED
- RGB48
- RGB48_SIGNED
- RGB565
- RGB9e5Float
- RGBA32
- RGBA32_SIGNED
- RGBA4444
- RGBA64
- RGBA64_SIGNED
- RGBAFloat
- RGBAHalf
- RGFloat
- RGHalf
- RHalf
Для всех других форматов, SetPixels32 не удается. Unity бросает исключение, когда SetPixels32 не удается.
Дополнительные ресурсы: SetPixels, SetPixelData, GetPixels32, GetPixels, Apply, GetRawTextureData, LoadRawTextureData, mipmapCount.
using UnityEngine;
public class Example : MonoBehaviour { // This script tints a texture's mipmap levels with different colors.
void Start() { Renderer rend = GetComponent<Renderer>();
// Duplicate the original texture and assign to this GameObject's material. Texture2D texture = (Texture2D)Instantiate(rend.material.mainTexture); rend.material.mainTexture = texture;
// Create the colors to use var colors = new Color32[3]; colors[0] = Color.red; colors[1] = Color.green; colors[2] = Color.blue; var mipCount = Mathf.Min(3, texture.mipmapCount);
// For each mipmap level, use GetPixels to fetch an array of pixel data, and use SetPixels32 to fill the mipmap level with one color. for (var mip = 0; mip < mipCount; ++mip) { var cols = texture.GetPixels32(mip); for (var i = 0; i < cols.Length; ++i) { cols[i] = Color32.Lerp(cols[i], colors[mip], 0.33f); } texture.SetPixels32(cols, mip); }
// Copy the changes to the GPU, and don't recalculate mipmap levels. texture.Apply(false); } }
Declaration
public void SetPixels32(int x, int y, int blockWidth, int blockHeight, Color32[] colors, int miplevel = 0);Параметры
| Параметр | Описание |
|---|---|
| x | Координаты x для размещения блока пикселей. Диапазон — от 0 до (ширина текстуры — 1). |
| y | Координаты y для размещения блока пикселей. Диапазон — от 0 до (высота текстуры — 1). |
| blockWidth | Ширина блока пикселей. |
| blockHeight | Высота блока пикселей. |
| цвета | Массив используемых цветов пикселей. Это изображение 2D, сплещенное в 1D массив. Должно иметь длину blockWidth x blockHeight. |
| мипуровень | Уровень mipmap для записи colors. Диапазон 0 до текстуры Texture.mipmapCount. Значение по умолчанию 0. |
Описание
Задает цвета пикселей для части уровня mipmap.
Эта версия SetPixels32 устанавливает часть уровня mipmap вместо всего уровня mipmap.