Version: 2022.3

Editor.RenderStaticPreview

切换到手册
public Texture2D RenderStaticPreview (string assetPath, Object[] subAssets, int width, int height);

参数

assetPath 要对其执行操作的资源。
subAssets assetPath 中所有资源的数组。
width 所创建纹理的宽度。
height 所创建纹理的高度。

返回

Texture2D 生成的纹理或 null。

描述

如果要渲染静态预览,可重载此方法。

重载后,RenderStaticPreview 可用于渲染 已转换为单个纹理的资源列表。此函数需要 用户提供的源代码,用于将资源整合在一起。创建纹理的 大小可由提供的宽度和高度确定。
如果返回 null,则使用类类型的内置图标。

// Render the provided asset texture into an Inspector thumbnail.
using UnityEngine;
using System.Collections;
using UnityEditor;

using System.IO;

public class Example : ScriptableObject { public Texture2D PreviewIcon; }

[CustomEditor(typeof(Example))] public class ExampleEditor : UnityEditor.Editor { public static void CreateAsset<Example>() where Example : ScriptableObject { Example asset = ScriptableObject.CreateInstance<Example>();

string path = AssetDatabase.GetAssetPath(Selection.activeObject);

if (path == "") { path = "Assets"; } else if (Path.GetExtension(path) != "") { path = path.Replace(Path.GetFileName(AssetDatabase.GetAssetPath(Selection.activeObject)), ""); }

string assetPathAndName = AssetDatabase.GenerateUniqueAssetPath(path + "/New " + typeof(Example).ToString() + ".asset");

AssetDatabase.CreateAsset(asset, assetPathAndName); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); EditorUtility.FocusProjectWindow(); Selection.activeObject = asset; }

[MenuItem("Examples/RenderStaticPreview example")] public static void CreateAsset() { CreateAsset<Example>(); }

public override void OnInspectorGUI() { Example e = (Example)target;

EditorGUI.BeginChangeCheck();

// Example has a single arg called PreviewIcon which is a Texture2D e.PreviewIcon = (Texture2D) EditorGUILayout.ObjectField( "Thumbnail", // string e.PreviewIcon, // Texture2D typeof(Texture2D), // Texture2D object, of course false // allowSceneObjects );

if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(e); AssetDatabase.SaveAssets(); Repaint(); } }

public override Texture2D RenderStaticPreview(string assetPath, Object[] subAssets, int width, int height) { Example example = (Example)target;

if (example == null || example.PreviewIcon == null) return null;

// example.PreviewIcon must be a supported format: ARGB32, RGBA32, RGB24, // Alpha8 or one of float formats Texture2D tex = new Texture2D (width, height); EditorUtility.CopySerialized (example.PreviewIcon, tex);

return tex; } }