untiyEditor上显示工程路径,方便辨别

什么都不说,上效果:

上代码:

#if UNITY_EDITOR_WIN
using UnityEngine;
using UnityEditor;
using System.Runtime.InteropServices;
using System.Diagnostics;
using UnityEditor.Callbacks;
using System;
using System.Text;

[InitializeOnLoad]
class UpdateUnityEditorTitle
{
    static UpdateUnityEditorTitle()
    {
        EditorApplication.hierarchyWindowItemOnGUI += DoUpdateTitleFunc;
    }

    static void DoUpdateTitleFunc(int instanceID, Rect selectionRect)
    {
        UpdateUnityEditorProcess.Instance.SetTitle();
    }
}
public class UpdateUnityEditorAssetHandler
{
    [OnOpenAssetAttribute(1)]
    public static bool AssetHandlerStep(int instanceID, int line)
    {
        UpdateUnityEditorProcess.lasttime = 0f;
        return false; // we did not handle the open
    }
}

class UpdateUnityEditorProcess
{
   
    public IntPtr hwnd = IntPtr.Zero;
    private bool haveMainWindow = false;
    private IntPtr mainWindowHandle = IntPtr.Zero;
    private int processId = 0;
    private IntPtr hwCurr = IntPtr.Zero;
    private static StringBuilder sbtitle = new StringBuilder(255);
    private static string UTitle = Application.dataPath;
    public static float lasttime = 0;

    public delegate bool EnumThreadWindowsCallback(IntPtr hWnd, IntPtr lParam);

    private static UpdateUnityEditorProcess _instance;
    public static UpdateUnityEditorProcess Instance
    {
        get
        {
            if (_instance == null)
            {
                _instance = new UpdateUnityEditorProcess();
                _instance.hwnd = _instance.GetMainWindowHandle(Process.GetCurrentProcess().Id);
            }
            return _instance;
        }
    }

    public void SetTitle()
    {
        //UnityEngine.Debug.Log(string.Format("{0} - {1}", Time.realtimeSinceStartup, lasttime));
        if (Time.realtimeSinceStartup > lasttime)
        {
            sbtitle.Length = 0;
            lasttime = Time.realtimeSinceStartup + 2f;
            int length = GetWindowTextLength(hwnd);

            GetWindowText(hwnd.ToInt32(), sbtitle, 255);
            string strTitle = sbtitle.ToString();
            string[] ss = strTitle.Split(‘-‘);
            if (strTitle.Length > 0 && !ss[0].Contains(UTitle))
            {
                SetWindowText(hwnd.ToInt32(), string.Format("{0} - {1}", UTitle, strTitle));
            }
        }
    }

    public IntPtr GetMainWindowHandle(int processId)
    {
        if (!this.haveMainWindow)
        {
            this.mainWindowHandle = IntPtr.Zero;
            this.processId = processId;
            EnumThreadWindowsCallback callback = new EnumThreadWindowsCallback(this.EnumWindowsCallback);
            EnumWindows(callback, IntPtr.Zero);
            GC.KeepAlive(callback);

            this.haveMainWindow = true;
        }
        return this.mainWindowHandle;
    }

    private bool EnumWindowsCallback(IntPtr handle, IntPtr extraParameter)
    {
        int num;
        GetWindowThreadProcessId(new HandleRef(this, handle), out num);
        if ((num == this.processId) && this.IsMainWindow(handle))
        {
            this.mainWindowHandle = handle;
            return false;
        }
        return true;
    }

    private bool IsMainWindow(IntPtr handle)
    {
        return (!(GetWindow(new HandleRef(this, handle), 4) != IntPtr.Zero) && IsWindowVisible(new HandleRef(this, handle)));
    }

    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern bool EnumWindows(EnumThreadWindowsCallback callback, IntPtr extraData);
    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern int GetWindowThreadProcessId(HandleRef handle, out int processId);

    [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
    public static extern IntPtr GetWindow(HandleRef hWnd, int uCmd);

    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern bool IsWindowVisible(HandleRef hWnd);

    [DllImport("user32.dll")]
    private static extern bool GetWindowText(int hWnd, StringBuilder title, int maxBufSize);

    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    private extern static int GetWindowTextLength(IntPtr hWnd);

    [DllImport("user32.dll", EntryPoint = "SetWindowText", CharSet = CharSet.Auto)]
    public extern static int SetWindowText(int hwnd, string lpString);

}

#endif
时间: 2024-10-14 15:19:14

untiyEditor上显示工程路径,方便辨别的相关文章

Java web项目从eclipse上移动到tomact服务器上,之路径更改,包括显示图片和导出excel

//项目做完之后,在本机电脑运行完全正常,上传图片,显示图片,导出excel,读取excel等功能,没有任何问题,但是,当打成war包放到服务器上时,这些功能全部不能正常使用. 最大的原因就是,本机测试跟服务器上的路径发生了变化. 记录一下,上传图片和显示图片的代码 1.前端页面: <form action="${pageContext.request.contextPath}/UploadWeiXiuServlet" enctype="multipart/form-d

获取当前工程路径

1.利用System.getProperty()函数获取当前路径:System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径 2.使用File提供的函数获取当前路径:File directory = new File("");//设定为当前文件夹try{    System.out.println(directory.getCanonicalPath());//获取标准的路径    Sy

placeholder怎样用IE和谷歌上显示统一内容

placeholder怎样用IE和谷歌上显示统一内容 击"开始"菜单中的"运行"命令,并在其对话框中输入"gpedit.msc"命令,进入"组策略"操作窗口. 在"组策略"左操作窗口中依次选择"用户配置→Windows设置→Internet Explorer维护→浏览器用户界面". 在"组策略"右操作窗口中双击"浏览器工具栏按钮",并在弹出的窗口中

四步搞定NiosII工程路径改变(转)

四步搞定NiosII工程路径改变 (2014-08-03 16:41:01) 转载▼http://blog.sina.com.cn/s/blog_bff0927b0102uy30.html 标签: nios 路径改变 setting.bsp 分类: 开发工具 在NiosII的开发过程中,路径改变会带来一系列问题:比如当我们在PC上某个路径下新建一个工程Nios_Prj(含QuartusII工程.Qsys模块和NiosII工程)后,假设其路径为C:\Nios_Prj,如果将工程路径改为D:\Nio

如何安装的apk不在桌面上显示,并在自己的代码中启动启动

在自己的项目中集成另一个apk,设置这个apk不在桌面上显示,并在自己的项目中能够启动这个apk 首先用apk tool反编译需要集成的apk,删除AndroidManifest.xml中的luncher启动标志,然后在使用apk tool进行打包,生成新的apk [1].[代码] [Java]代码 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 //方法一 Intent intent =

对话框上动态控件的创建、在Picture Control控件上显示图片

1  MFC对话框之上的动态控件的创建 对话框上的控件是MFC类的一个具体对象. 当在对话框之上使用静态控件时,可以根据类向导来为每个控件添加消息.响应函数以及变量. 当需要在对话框中动态的创建某个控件时,就需要手动来代替类向导为动态控件添加消息.响应函数及变量. 动态创建控件时,可按照以下步骤进行: (1) 明确控件所属于的类 每一个控件都对应着一个类(例如按钮Button所属于的类为CButton). 如,在程序中我们需要用CButton类创建一个具体的按钮对象,并用函数指示它在对话框之上的

使用Tslib在触摸屏上显示汉字【转】

转自:http://www.latelee.org/embedded-linux/use-tslib-to-display-chinese-character.html 终于到了在触摸屏上显示汉字了,真正写代码.测试的时间是1天,在此之前的一切准备.学习花费约2周到3周时间.而为了获取触摸屏上显示的图像,花费约2天.由于网络驱动已经接近于放弃状态,NFS用不了,只好用U盘来回复制(即使没有耐心也必须有耐心了).明明在内核中选择了支持NTFS格式的读写,但却不能将开发板上的文件复制到U盘,而用另一

在jsp上显示pdf||网页直接打开PDF 在IE中显示pdf文档的方法及参数设置

一:在jsp上显示pdf <%@ page language="java" import="java.util.*,java.io.*" pageEncoding="ISO-8859-1"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://"     + request.getSer

百度 UEditor--自定义上传文件路径及读取文件

jsp中替换掉上传和预览图片的URL 注意第一句判断,注意要用项目的相对URL return '/sirdifoa/kentra/file/uploadImage.do'; if(UE.Editor.prototype._bkGetActionUrl == undefined)UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;     UE.Editor.prototype.getActionUrl =