Объявление
public void SetPixels(Color[] colors, int miplevel = 0);Параметры
| colors | Массив цветов пикселей для назначения (двумерное изображение, сведенное к одномерному массиву). |
| miplevel | Мип-уровень текстуры для записи. |
Описание
Установите блок цветов пикселей.
Эта функция принимает массив цветов и изменяет цвета пикселей всего мип-уровня текстуры. Вызовите Apply, чтобы фактически загрузить измененные пиксели на видеокарту.
Массив colors – это сглаженный двумерный массив, в котором пиксели располагаются слева направо и снизу вверх (т. е. ряд за рядом). Размер массива должен быть не меньше ширины на высоту используемого мип-уровня. Уровень MIP по умолчанию равен нулю (базовая текстура), и в этом случае размер равен размеру текстуры. В общем случае размер мип-уровня равен mipWidth=max(1,width>>miplevel)
Эта функция работает только с (большинством) несжатых форматов текстур. Для других форматов SetPixels не работает. Texture.isReadable должно быть true.
Использование SetPixels может быть намного быстрее, чем повторный вызов SetPixel, особенно для больших текстур. Кроме того, SetPixels может получить доступ к отдельным уровням MIP-карт. Для еще более быстрого доступа к пиксельным данным используйте GetRawTextureData, который возвращает NativeArray.
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;
// colors used to tint the first 3 mip levels
Color[] colors = new Color[3];
colors[0] = Color.red;
colors[1] = Color.green;
colors[2] = Color.blue;
int mipCount = Mathf.Min(3, texture.mipmapCount);
// tint each mip level
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);
}
// actually apply all SetPixels, don't recalculate mip levels
texture.Apply(false);
}
}
Объявление
public void SetPixels(int x, int y, int blockWidth, int blockHeight, Color[] colors, int miplevel = 0);Параметры
| miplevel | Мип-уровень текстуры для записи. |
Описание
Установите блок цветов пикселей.
Эта функция является расширенной версией SetPixels выше; это не меняет всего
mip, но изменяет только blockWidth на область blockHeight, начиная с x,y. Массив colors должен иметь размер blockWidth*blockHeight, а измененный блок должен соответствовать используемому уровню MIP.

