版本: Unity 6 (6000.0)
语言英语
  • C#

EditorGUI.DrawPreviewTexture

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每项更改建议,并在适用时进行更新。

关闭

提交失败

由于某种原因,您的更改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

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);

参数

position 屏幕上用于绘制纹理的矩形区域。
image 要显示的纹理
mat 绘制纹理时使用的材质。
scaleMode 当图像的长宽比不符合要绘制的区域的长宽比时,如何缩放图像。
imageAspect 源图像使用的长宽比。如果为 0(默认值),则使用图像的长宽比。
mipLevel 要采样的 mip 级别。如果为负数,则正常采样纹理。设置材质的 _Mip 属性。
colorWriteMask 指定要写入的图像颜色组件。设置材质的 _ColorMask 属性。
exposure 指定纹理的曝光度。设置材质的 _Exposure 属性。

描述

在矩形区域内绘制纹理。

如果 mat 为 null(默认值),则将为 RGBM 或双 LDR 光照贴图或法线贴图选择合适的材质,否则将选择回退 blit 材质。


编辑器窗口中的预览纹理。

// 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(); } }