UnityEditor 的title显示工作路径

什么也不说,效果就是:

代码就是

#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-11-08 18:45:44

UnityEditor 的title显示工作路径的相关文章

linux服务器上如何显示工作路径

1. 修改PS环境变量 [[email protected] ~]# vi /etc/bashrc [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\[email protected]\h \W]\\$ " 将PS1="[\[email protected]\h \W]\\$ "修改成PS1="[\[email protected]\h \w]\\$ " 2. 重新

pwd 显示当前所在的工作路径

1.功能说明 pwd命令是"print working directory "首字母缩写,显示当前目录的绝对路径. 2.语法格式 pwd [option] pwd 选项 3.命令参数 参数 参数说明 -L 当目录是链接(目录快捷方式)时,显示连接文件路径 -P 输出物理路径 说明:当一个目录有链接文件时,pwd输出当前路径 4.使用范例 范例1 :不带任何选项执行pwd命令 [[email protected] ~]# pwd /root [[email protected] ~]#

ubantu终端下只显示当前路径,而不显示绝对路径

Ubuntu下,默认情况下,对于终端,是显示出绝对的路径的,比如: 现在想要让其只显示相对路径. [解决过程] 参考: Linux中,去掉终端显示的当前目录的绝对路径 1.先输入命令: sudo vim ~/.bashrc 找到.bashrc中的,有关PS1的部分,从: if [ "$color_prompt" = yes ]; then    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[email protected

C#、ASP.NET获取当前应用程序的绝对路径,获取程序工作路径 (转帖)

C#.ASP.NET获取当前应用程序的绝对路径,获取程序工作路径 ============================================ 使用 Application.StartupPath 至于 System.IO.Directory.GetCurrentDirectory不行,因为应用程序有个当前工作目录,这个工作目录是会变的,不总是程序的启动目录(当然默认启动是应用程序目录). 比如说,你打开命令行(cmd),它就会显示一个路径,你会发现这个路径(通常是 C:/Docum

如何修改MyEclipse的默认工作路径Workplace

一.启动Eclipse/MyEclipse后, 打开"Window -> Preferences -> General -> Workspace", 点Workspace页上的"Startup and Shutdown", 然后勾选"Startup and Shutdown"页中的"Prompt for workspace on startup",然后关闭重新启动,就会弹出修改myeclipse工作路径对话框

java显示本地磁盘所有盘符,显示桌面路径

import java.io.File; import javax.swing.filechooser.FileSystemView; /** 显示本地磁盘根盘符,显示桌面路径 */ public class RDDemo { static File[] files; public static void main(String[] args) { FileSystemView sys = FileSystemView.getFileSystemView(); files = sys.getRo

MyEclipse 如何修改默认工作路径

MyEclipse 如何修改默认工作路径(2010-09-20 12:06:02)转载▼标签: 杂谈 分类: java 首次启动Eclipse/MyEclipse时, 会弹出"Workspace Launcher"对话框, 提示设置Workspace路径. 设定好路径后, 倘若勾选了"Use this as the default and do not ask again", 那么以后再启动时就不会有提示, 直接进入默认工作空间. 有3中方法可以更改workspac

CentOS下shell显示-bash-4.1#不显示用户名路径的解决方法

CentOS下shell显示-bash-4.1$不显示用户名路径的解决方法 问题描述: CentOS下新增一个用户,登录进去之后shell脚本的信息如下: 而不是我们经常看到的[email protected]的组合,看起来很不舒服. 原因就是你创建用户的时候,如果指定了-M参数,而因此没有创建用户家目录,所以系统就不会在创建用户的时候,自动拷贝/etc/skel目录下的用户环境变量文件到用户家目录,也就导致这些文件不存在,出现-bash-4.1#的问题了,手动拷贝一下就行 解决方法一.未验证

Linux 下shell显示-bash-4.1$不显示用户名路径的解决方法

Linux CentOS下shell显示-bash-4.1$不显示用户名路径的解决方法 问题描述: CentOS下新增一个用户,登录进去之后shell脚本的信息如下: 而不是我们经常看到的[email protected]的组合,看起来很不舒服. 解决方案: 问题的原因是因为没有配置.bash_profile的问题,可以通过配置这个文件来解决问题. 1.在Terminal输入: vi ~/.bash_profile 2.如果没有.bash_profile可以自己添加.然后往文件中添加如下内容:e