Объявление
public Rect[] PackTextures(Texture2D[] textures, int padding, int maximumAtlasSize, bool makeNoLongerReadable);Параметры
textures | Массив текстур для упаковки в атлас. |
padding | Заполнение в пикселях между упакованными текстурами. |
maximumAtlasSize | Максимальный размер результирующей текстуры. |
makeNoLongerReadable | Должна ли текстура быть помечена как нечитаемая? |
Возвращает
Rect[] Массив клетчатки, содержащий УФ-координаты в атласе для каждой входной текстуры, или нуль, если упаковка не удалялась.
Описание
Объединяет несколько текстур в атлас текстур.
Эта функция заменит текущую текстуру атласом, созданным из предоставленных текстур. Размер, формат и мипмапы любой из текстур могут измениться после упаковки.
Результирующий атлас текстур будет иметь размер, необходимый для размещения всех входных текстур, но не более maximumAtlasSize
в
каждое измерение. Если исходные текстуры не помещаются в атлас текстур нужного размера, они будут уменьшены до нужного размера.
Если вы сжали все входные текстуры и соблюдены следующие условия, Unity также сжимает выходной атлас:
- Все входные текстуры относятся к одному сжатому типу или представляют собой смесь совместимых типов.
padding
равен нулю, или Все входные текстуры не имеют мипмапов
Если какое-либо из входных изображений имеет мип-карты и значение отступа больше нуля, текстура атласа несжатая. Это связано с ограничениями выравнивания сжатых данных. Если вы не сжали одну или несколько входных текстур, атлас останется в несжатом формате RGBA32. Если атлас текстуры остается сжатым и имеет значение заполнения больше нуля, значение заполнения округляется до следующего кратного четырем. Это происходит из-за ограничений выравнивания сжатых данных.
Это краткий список сжатых форматов. Вы можете найти полный список в TextureFormat:
- ETC
- ETC2
- EAC
- DXT
- ASTC
- PVRTC
- DXT1 и TextureFormat::pref:DXT5 приводят к созданию атласа DXT5.
- ETC2_RGB, ETC_RGB4 и ETC2_RGBA8 результат в атласе ETC2_RGBA8.
Вы можете смешивать эти типы в атласе, где они остаются сжатыми:
Если ни у одной из входных текстур нет мип-карт, то и в атласе нет мип-карт.
Если makeNoLongerReadable
имеет значение true
, текстура будет помечена как нечитаемая, а память будет освобождена после загрузки в хранилище. ГПУ. По умолчанию makeNoLongerReadable
имеет значение false
.
using UnityEngine;
public class Example : MonoBehaviour
{
// Исходники текстур.
Texture2D[] atlasTextures;
// Прямоугольники для отдельных текстур атласа.
Rect[] rects;
void Start()
{
// Упакуйте отдельные текстуры в минимально возможное пространство,
// оставляя зазор в два пикселя между их краями.
Texture2D atlas = new Texture2D(8192, 8192);
rects = atlas.PackTextures(atlasTextures, 2, 8192);
}
}