Unity 6.3
0 онлайн 2 гостей 3 в системе
Вход

EditorGUI.DrawPreviewTexture

Declaration

public static void DrawPreviewTexture(Rect position, Texture image, Material mat = null, ScaleMode scaleMode = ScaleMode.StretchToFill, float imageAspect = 0, float mipLevel = -1, Rendering.ColorWriteMask colorWriteMask = ColorWriteMask.All, float exposure = 0);

Параметры

Параметр Описание
должность Прямоугольник на экране, чтобы нарисовать текстуру внутри.
изображение Texture для отображения.
мат Материал, который будет использоваться при рисовании текстуры.
scaleMode Как масштабировать изображение, если его соотношение сторон не соответствует соотношению сторон, в котором оно будет нарисовано.
imageAspect Соотношение сторон, которое будет использоваться для исходного изображения. Если 0 (по умолчанию), используется соотношение сторон из изображения.
mipLevel Уровень mip для семплирования. Если отрицательно, текстура семплируется нормально. Устанавливает свойство _Mip материала.
colorWriteMask Определяет, какие цветовые компоненты изображения будут записаны. Устанавливается свойство _ColorMask материала.
воздействие Указывает экспозицию текстуры. Устанавливает свойство _Exposure материала.

Описание

Чертает текстуру внутри прямоугольника.

Если мат имеет значение null (по умолчанию), то для RGBM или doubleLDR lightmap или карты нормалей будет выбран соответствующий материал, а в противном случае будет выбран резервный материал для блита.


Предварительный просмотр текстуры в окне редактора.

// Load a texture, display the texture, display its alpha channel and
// show a preview of the inverted texture
using UnityEditor;
using UnityEngine;

class EditorGUITextures : EditorWindow { Texture2D texture; Texture2D invertedTexture; bool showInverted = false;

[MenuItem("Examples/Texture Previewer")] static void Init() { var window = GetWindow<EditorGUITextures>("Texture Previewer"); window.position = new Rect(0, 0, 400, 200); window.Show(); }

void OnGUI() { texture = (Texture2D)EditorGUI.ObjectField(new Rect(3, 3, 200, 20), "Add a Texture:", texture, typeof(Texture2D)); if (GUI.Button(new Rect(208, 3, position.width - 210, 20), "Process Inverted")) { if (invertedTexture) DestroyImmediate(invertedTexture); //Copy the new texture invertedTexture = new Texture2D(texture.width, texture.height, texture.format, (texture.mipmapCount != 0)); for (int m = 0; m < texture.mipmapCount; m++) invertedTexture.SetPixels(texture.GetPixels(m), m); InvertColors(); showInverted = true; } if (texture) { EditorGUI.PrefixLabel(new Rect(25, 45, 100, 15), 0, new GUIContent("Preview:")); EditorGUI.DrawPreviewTexture(new Rect(25, 60, 100, 100), texture); EditorGUI.PrefixLabel(new Rect(150, 45, 100, 15), 0, new GUIContent("Alpha:")); EditorGUI.DrawTextureAlpha(new Rect(150, 60, 100, 100), texture); EditorGUI.PrefixLabel(new Rect(275, 45, 100, 15), 0, new GUIContent("Inverted:")); if (showInverted) EditorGUI.DrawPreviewTexture(new Rect(275, 60, 100, 100), invertedTexture); if (GUI.Button(new Rect(3, position.height - 25, position.width - 6, 20), "Clear texture")) { texture = EditorGUIUtility.whiteTexture; showInverted = false; } } else { EditorGUI.PrefixLabel( new Rect(3, position.height - 25, position.width - 6, 20), 0, new GUIContent("No texture found")); } }

void InvertColors() { for (int m = 0; m < invertedTexture.mipmapCount; m++) { Color[] c = invertedTexture.GetPixels(m); for (int i = 0; i < c.Length; i++) { c[i].r = 1 - c[i].r; c[i].g = 1 - c[i].g; c[i].b = 1 - c[i].b; } invertedTexture.SetPixels(c, m); } invertedTexture.Apply(); } }