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

Texture2D.SetPixels

Объявление

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.

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