Unity在Project视图里面显示文件的拓展名

功能脚本如下:

using System.IO;
using System.Reflection;
using UnityEngine;
using UnityEditor; [InitializeOnLoad]
public static class ShowFileExtensions
{
static ShowFileExtensions()
{
EditorApplication.projectWindowItemOnGUI += ProjectWindowItemOnGUI;
} private static void ProjectWindowItemOnGUI(string guid, Rect rect)
{
string assetPath = AssetDatabase.GUIDToAssetPath(guid);
Object obj = AssetDatabase.LoadAssetAtPath<Object>(assetPath); if (obj != null && AssetDatabase.IsMainAsset(obj) && !IsDirectory(obj))
{
if (showBigIcon)
{
string extension = Path.GetExtension(assetPath);
GUI.Label(rect, extension, EditorStyles.boldLabel);
}
else
{
var fileName = Path.GetFileName(assetPath);
var labelRect = rect.Translate();
GUI.Label(labelRect, fileName);
}
} EditorApplication.RepaintProjectWindow();
} private static bool showBigIcon
{
get { return IsTwoColumnMode && listAreaGridSize > 16f; }
} private static bool IsTwoColumnMode
{
get
{
var projectWindow = GetProjectWindow();
var projectWindowType = projectWindow.GetType();
var modeFileInfo = projectWindowType.GetField("m_ViewMode", BindingFlags.Instance | BindingFlags.NonPublic);
int mode = (int) modeFileInfo.GetValue(projectWindow);
return mode == 1;
}
} private static float listAreaGridSize
{
get
{
var projectWindow = GetProjectWindow();
var projectWindowType = projectWindow.GetType();
var propertyInfo = projectWindowType.GetProperty("listAreaGridSize", BindingFlags.Instance | BindingFlags.Public);
return (float) propertyInfo.GetValue(projectWindow, null);
}
} private static EditorWindow GetProjectWindow()
{
if (EditorWindow.focusedWindow != null && EditorWindow.focusedWindow.titleContent.text == "Project")
{
return EditorWindow.focusedWindow;
} return GetExistingWindowByName("Project");
} private static EditorWindow GetExistingWindowByName(string name)
{
EditorWindow[] windows = Resources.FindObjectsOfTypeAll<EditorWindow>();
foreach (var item in windows)
{
if (item.titleContent.text == name)
{
return item;
}
} return default(EditorWindow);
} private static Rect Translate(this Rect rect)
{
rect.x += 15.8f;
rect.y += 0.9f;
return rect;
} private static bool IsDirectory(Object obj)
{
if (obj == null)
{
return false;
} return obj is DefaultAsset && !AssetDatabase.IsForeignAsset(obj);
}
}

  

Unity在Project视图里面显示文件的拓展名的更多相关文章

  1. Animator窗口视图Project视图PlayerIdleAnimation和PlayerWalkingAnimation

    Animator窗口视图Project视图PlayerIdleAnimation和PlayerWalkingAnimation 通过上一小节的操作,我们新建了2个动画:PlayerIdleAnimat ...

  2. C# 之 获取文件名及拓展名

    1.用Path类的方法(最常用) string fullPath = @"\WebSite\Default.aspx"; string filename = System.IO.P ...

  3. 用SQL脚本移除视图中存在的机器名

    用SQL脚本移除视图中存在的机器名 例子: msccdr.cdr.DimRMAReturnMethod CREATE VIEW CDR.DimRMAReturnMethod ( ReturnMetho ...

  4. Win7怎么显示文件的后缀名

    Win7怎么显示文件的后缀名.. --------------- -------------- --------------- -------------- --------------- ----- ...

  5. 关于Error:Maven Resources Compiler: Maven project configuration required for module '项目名' isn't available. Compilation of Maven projects is supported only&

    总是出现Error:Maven Resources Compiler: Maven project configuration required for module '项目名' isn't avai ...

  6. Win10下默认显示文件的扩展名

    默认不显示文件的后缀名 1.右击此电脑,点击属性 2.点击控制面板主页 3.点击文件资源管理器选项 4.切换到查看选项卡,取消勾选“隐藏已知文件类型的扩展名”,应用->确定 结果:

  7. Linux学习笔记:split切分文件并按规律命名及添加拓展名

    基础知识 功能:使用 shell 的 split 可以将一个大文件分割成很多个小文件,有时文件太大处理起来不方便就需要使用到了. 在默认情况下将按照每1000行切割成一个小文件. 语法: split ...

  8. PHP获取文件拓展名的方法

    1.用strrchar()函数,查找字符串在另一字符串中最后出现的位置,并返回该位置到字符串最后的所有字符(返回结果包括点).即返回拓展名前  点  到结尾的字符,即为扩展名.注意与strchar() ...

  9. Unity查找Editor下Project视图中特定的资源

    [MenuItem("Tools/Check Text Count")] public static void CheckText () { //查找指定路径下指定类型的所有资源, ...

随机推荐

  1. Nuget:目录

    ylbtech-Nuget:目录 1.返回顶部 1. https://www.nuget.org 2. https://docs.microsoft.com/zh-cn/nuget/ 3. https ...

  2. 继承自DynamicObject的对象的Xml序列化

    默认情况下,对继承自DynamicObject的对象进行序列化操作是不会报错的,但是并没有实际序列化出任何东西来 为了让它进行序列化,我们改造一下实现类,实现IXmlSerializable接口 代码 ...

  3. HBase 二级索引与Coprocessor协处理器

    Coprocessor简介 (1)实现目的 HBase无法轻易建立“二级索引”: 执行求和.计数.排序等操作比较困难,必须通过MapReduce/Spark实现,对于简单的统计或聚合计算时,可能会因为 ...

  4. Java探索之旅(1)——概述与控制台输入

    使用的课本: Java语言程序设计(基础篇)----西电 李娜(译) 原著: Introduction to Java Progrmming(Eighth Edition) -----Y.Daniel ...

  5. Java之反射(部分文档摘过来方便以后查看)

    第1章 类加载器 1.1 类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. l 加载 就是指将class文件读入内存,并为之创建 ...

  6. 15、使用ggtree实现进化树的可视化和注释(转载)

    本文作者:余光创,目前就读于香港大学公共卫生系,开发过多个R/Bioconductor包,包括ChIPseeker, clusterProfiler, DOSE,ggtree,GOSemSim和Rea ...

  7. p2921 Trick or Treat on the Farm

    传送门 题目 每年万圣节,威斯康星的奶牛们都要打扮一番,出门在农场的N个牛棚里转 悠,来采集糖果.她们每走到一个未曾经过的牛棚,就会采集这个棚里的1颗糖果.农场不大,所以约翰要想尽法子让奶牛们得到快乐 ...

  8. 23.通过MS17_010来学习msf对渗透的利用

    Metersploit 集成了渗透阶段的全部利用,从漏洞探测,到漏洞利用,最后到后渗透阶段.本次博客主要抛砖引玉,通过对MS17_010漏洞的复现,来学习Metasploit. 漏洞环境: 靶机:wi ...

  9. DESede/CBC/PKCS5Padding

    Java.security.NoSuchAlgorithmException: Cannot find any provider supporting DESede/CBC/PKCS5Padding ...

  10. 字符串中去除多余的空格保留一个(MS SQL Server)

    大约2年前,写过一篇<字符串中去除多余的空格保留一个(C#)>https://www.cnblogs.com/insus/p/7954151.html 今天,Insus.NET使用MS S ...