EditorApplication.projectWindowItemOnGUI

作者:追风剑情 发布于:2018-12-11 10:30 分类:Unity3d

示例: 按住alt键显示资源后缀名

参考原文 https://www.cnblogs.com/Yellow0-0River/p/6513192.html

  1. using UnityEditor;
  2. using UnityEngine;
  3. using System.IO;
  4. using System.Reflection;
  5. using System.Text;
  6. using System;
  7.  
  8. [InitializeOnLoad]
  9. public class AssetExporter
  10. {
  11. static AssetExporter()
  12. {
  13. EditorApplication.projectWindowItemOnGUI += ProjectWindowItemOnGUI;
  14. }
  15.  
  16. static void ProjectWindowItemOnGUI(string guid, Rect selectionRect)
  17. {
  18. if (Event.current.alt) {
  19. EditorWindow window = EditorWindow.focusedWindow;
  20. if (window == null || window.titleContent.text != "Project")
  21. return;
  22.  
  23. Type window_type = window.GetType();
  24. FieldInfo field = window_type.GetField("m_ViewMode", BindingFlags.Instance | BindingFlags.NonPublic);
  25. int mode = (int)field.GetValue(window); //0:单列模式 1:两列模式
  26. if (mode != 0)
  27. return;
  28.  
  29. string asset_path = AssetDatabase.GUIDToAssetPath(guid);
  30. Object asset = AssetDatabase.LoadAssetAtPath<Object>(asset_path);
  31. if (asset == null || AssetDatabase.IsSubAsset(asset) || AssetDatabase.IsValidFolder(asset_path))
  32. return;
  33. string extension = Path.GetExtension(asset_path);
  34. selectionRect.x += selectionRect.width - 60f;
  35. GUI.Label(selectionRect, extension, EditorStyles.wordWrappedLabel);
  36. EditorApplication.RepaintProjectWindow();
  37. }
  38. }
  39.  
  40. // 判断资源是否为目录
  41. public static bool IsDirectory(Object asset)
  42. {
  43. if (asset == null)
  44. return false;
  45. return asset is DefaultAsset && !AssetDatabase.IsForeignAsset(asset);
  46. }
  47. }

效果

1111.png

标签: Unity3d

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号