Texture2D.SetPixels
Declaration
public void SetPixels(Color[] colors, int miplevel = 0);Параметры
| Параметр | Описание |
|---|---|
| цвета | Массив используемых цветов пикселей. Это изображение 2D, сплоченное до 1D массива. |
| мипуровень | Уровень mipmap для записи colors. Диапазон 0 до текстуры Texture.mipmapCount. Значение по умолчанию 0. |
Описание
Задает цвета пикселей для всего уровня mipmap.
Этот метод устанавливает пиксельные данные для текстуры в памяти CPU. Texture.isReadable должно быть true, и вы должны вызвать Apply после SetPixels для загрузки измененных пикселей в GPU.
Apply является дорогостоящей операцией, потому что она копирует все пиксели текстуры, даже если вы изменили только некоторые пиксели, так что измените как можно больше пикселей, прежде чем вызовёте ее.colors должен содержать пиксели строка за строкой, начиная с нижнего левого угла текстуры. Размер массива должен быть равен ширине × высоте уровня mipmap.
Единый призыв к SetPixels обычно быстрее, чем несколько вызовов SetPixel, особенно для больших текстур.SetPixels может быть медленнее, чем некоторые другие методы текстуры, потому что он преобразует Color структуру в формат, используемый текстурой. Чтобы задать данные пикселей быстрее, используйте SetPixelData вместо этого.
Вы можете использовать SetPixels со следующим текстом: текстурные форматы:
- 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
Для всех других форматов, SetPixels не удается. Unity бросает исключение, когда SetPixels не удается.
Дополнительные ресурсы: GetPixels, SetPixels32, SetPixelData, Apply, GetRawTextureData, LoadRawTextureData, mipmapCount.
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { void Start() { Renderer rend = GetComponent<Renderer>();
// Duplicate the original texture and assign to the material Texture2D texture = Instantiate(rend.material.mainTexture) as Texture2D; rend.material.mainTexture = texture;
// Create the colors to use Color[] colors = new Color[3]; colors[0] = Color.red; colors[1] = Color.green; colors[2] = Color.blue; int mipCount = Mathf.Min(3, texture.mipmapCount);
// For each mipmap level, use GetPixels to fetch an array of pixel data, and use SetPixels to fill the mipmap level with one color. for (int mip = 0; mip < mipCount; ++mip) { Color[] cols = texture.GetPixels(mip); for (int i = 0; i < cols.Length; ++i) { cols[i] = Color.Lerp(cols[i], colors[mip], 0.33f); } texture.SetPixels(cols, mip); } // Copy the changes to the GPU. and don't recalculate mipmap levels. texture.Apply(false); } }
Declaration
public void SetPixels(int x, int y, int blockWidth, int blockHeight, Color[] 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.
Эта версия SetPixels устанавливает часть уровня mipmap вместо всего уровня mipmap.