Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Texture2D.SetPixels32

Объявление

public void SetPixels32(Color32[] colors, int miplevel = 0);

Параметры

colors Значения пикселей для назначения текстуре.
miplevel Mip-уровень Текстуры, переданный в значениях пикселей.

Описание

Установите блок цветов пикселей.

Эта функция принимает массив Color32 и изменяет цвета пикселей всего мип-уровня текстуры. Вызовите Apply, чтобы фактически загрузить измененные пиксели на видеокарту.

Массив colors – это сглаженный двумерный массив, в котором пиксели располагаются слева направо и снизу вверх (т. е. ряд за рядом). Размер массива должен быть не меньше ширины на высоту используемого мип-уровня. Уровень MIP по умолчанию равен нулю (базовая текстура), и в этом случае размер равен размеру текстуры. В общем случае размер мип-уровня равен mipWidth=max(1,width>>miplevel) и аналогично для высоты.

Эта функция работает только с (большинством) несжатых форматов текстур. Если формат текстуры отличается от RGBA32, ARGB32 или любого другого 8-битного/канального формата, эта функция преобразует данные. Это дополнительное преобразование замедляет работу функции. Для других форматов SetPixels32 не работает. Texture.isReadable должно быть true.

Использование SetPixels32 выполняется быстрее, чем вызов SetPixels. Для еще более быстрого доступа к пиксельным данным используйте GetRawTextureData, который возвращает NativeArray.

SetPixels32 создает исключение в случае сбоя.

Смотрите так же: SetPixels, SetPixelData, GetPixels32, GetPixels, Apply, GetRawTextureData, LoadRawTextureData, mipmapCount.

using UnityEngine; public class Example : MonoBehaviour { // Этот скрипт будет окрашивать мип-уровни текстуры в разные цвета // (1-й уровень красный, 2-й зеленый, 3-й синий). Вы можете использовать его, чтобы увидеть // какие мип-уровни реально используются и как. void Start() { Renderer rend = GetComponent<Renderer>(); // duplicate the original texture and assign to the material Texture2D texture = (Texture2D)Instantiate(rend.material.mainTexture); rend.material.mainTexture = texture; // colors used to tint the first 3 mip levels var colors = new Color32[3]; colors[0] = Color.red; colors[1] = Color.green; colors[2] = Color.blue; var mipCount = Mathf.Min(3, texture.mipmapCount); // tint each mip level 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); } // actually apply all SetPixels32, don't recalculate mip levels texture.Apply(false); } }

Объявление

public void SetPixels32(int x, int y, int blockWidth, int blockHeight, Color32[] colors, int miplevel = 0);

Описание

Установите блок цветов пикселей.

Эта функция является расширенной версией SetPixels32 выше; он не изменяет весь уровень MIP, а изменяет только blockWidth на область blockHeight, начиная с x,y. Массив colors должен иметь размер blockWidth*blockHeight, а измененный блок должен соответствовать используемому уровню MIP.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3