Unity Prefab 缩略图全黑无法预览
在Unity开发中经常遇到一种情况:就是在Unity编辑器中Project窗口Prefab无法预览,缩略图是一张全黑的图片,这其实非常不友好,尤其是对美术的小伙伴。虽然系统自带刷新,重新导入之类的功能,但是偶尔有效偶尔无效。大大降低了工作效率,浪费了大把时间在找资源上。这里做了个小工具,反正我把自己项目里的所有缩略图不能预览的prefab都解决了,其他的也没多做测试。可能能帮到你,也可能浪费你感情。莫怪。
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEditor;public class ProjectController{ static Texture m_sPrefabIcon; static Texture m_spPriviewIcon; static string m_activeObjPath; static string m_name; static void InitializeOnLoadMethod() { EditorApplication.projectWindowItemOnGUI = delegate (string guid, Rect selectionRect) { m_activeObjPath = AssetDatabase.GetAssetPath(Selection.activeObject); if (Selection.activeObject && guid == AssetDatabase.AssetPathToGUID(m_activeObjPath)) { if(m_activeObjPath.EndsWith(".prefab") ) { OnGUI(selectionRect, Selection.activeObject); } else if(m_activeObjPath.EndsWith(".mat")) { OnGUI(selectionRect, Selection.activeObject); } else { if(m_activeObjPath.LastIndexOf('.') > 0) { m_name = m_activeObjPath.Substring(m_activeObjPath.LastIndexOf('.')); } if (GUI.Button(selectionRect, m_name)) { Debug.LogFormat("click:{0}", Selection.activeObject.name + "Path:" + m_activeObjPath + "" + m_name); } } } }; } private static void OnGUI(Rect rect , Object obj) { //设置按钮区域 float width = 50f; rect.x += rect.width * 0.5f; rect.y += 2f; rect.width = width; rect.height -= 20; //m_sPrefabIcon = PrefabUtility.GetIconForGameObject((GameObject)Selection.activeObject); m_spPriviewIcon = AssetPreview.GetAssetPreview(obj) as Texture; if (GUI.Button(rect, m_spPriviewIcon)) { Debug.LogFormat("click:{0}", obj.name); if (m_spPriviewIcon == null) Debug.LogFormat("click:{0}", "没有priview"); } Rect freshRect = rect; freshRect.y = rect.y + rect.height; freshRect.height = 20; if (GUI.Button(freshRect, "刷新")) { Fresh(Selection.activeObject); } } private static void Fresh(Object obj) { EditorUtility.SetDirty(obj); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); }}
页:
[1]