当前unity编辑器标题格式如下:
Unity - Unity 2017.4.6f1 Personal (64bit) - TestMoveAndJump.unity - Ro.Unity - PC, Mac & Linux Standalone <OpenGL 4.5>因为"Unity - Unity 2017.4.6f1 Personal (64位)“太长了,所以在应用切换器和任务栏中很难识别,我希望把unity项目名称放在前面,例如:
Ro.Unity Unity - Unity 2017.4.6f1 Personal (64bit) - TestMoveAndJump.unity - Ro.Unity - PC, Mac & Linux Standalone <OpenGL 4.5>我应该怎么做,我可以在系统c++中更改unity窗口标题,但我发现unity编辑器标题在很多情况下会被重置,所以我希望能在unity编辑器脚本中设置unity编辑器标题
发布于 2018-08-23 01:48:23
我不确定你已经尝试了什么,这是否是你所说的"system c++“的意思,但我已经成功地用这个更改了标题。(您需要将其附加到GameObject)
仅适用于Windows tho。但不管怎样,我还是要把这个放到这里。
[ExecuteInEditMode]
public class TitleChanger : MonoBehaviour
{
[DllImport("user32.dll", EntryPoint = "SetWindowText")]
public static extern bool SetWindowText(System.IntPtr hwnd, System.String lpString);
[DllImport("user32.dll")]
private static extern System.IntPtr GetActiveWindow();
void Start()
{
IntPtr windowPtr = GetActiveWindow();
SetWindowText(windowPtr, Application.productName + " [" + Application.unityVersion +"]");
}
void OnRenderObject()
{
IntPtr windowPtr = GetActiveWindow();
SetWindowText(windowPtr, Application.productName + " [" + Application.unityVersion + "]");
}
}有很多方法可以在你的标题中获得信息,Application有几个,如果你想要当前的场景,你可以做SceneManager.GetActiveScene().name等。
编辑:我注意到在保存我的项目时标题会掉下来,但是在我把OnRenderObject添加到上面的代码之后,这不再是问题了。
发布于 2018-08-23 12:39:01
我目前的解决方案是在EditorApplication.update中检查和更改标题,我使用linux xdotool来获取和设置标题,我认为windows和mac有类似的解决方案,如果我打开太多的unity编辑器,它会非常慢,我仍然希望找到一个本地的方法来获取和设置unity编辑器的标题。
[InitializeOnLoad]
public class ChangeUnityEditorWindowTitle : MonoBehaviour
{
// unity editor will auto reset editor title in many cases
static ChangeUnityEditorWindowTitle()
{
EditorApplication.update += ChangeTitleWhenSceneOnRuntime;
}
private static DateTime lastTime;
private static void ChangeTitleWhenSceneOnRuntime()
{
if ((DateTime.Now - lastTime).TotalSeconds > 1)
{
lastTime = DateTime.Now;
ChangeTitle();
}
}
static string GetCurEditorTitle()
{
if (curWid != null)
{
return Shsu($"xdotool getwindowname {curWid}").Trim();
}
return null;
}
private static string _curWid;
private static string curWid
{
get
{
if (_curWid == null)
{
var cmd = $"xdotool search --onlyvisible --name \"Unity - Unity.*- {GetProjectName()} -\"";
// var cmd = $"xdotool search --onlyvisible --pid {pid}";
_curWid = Shsu(cmd).Split("\n")[0].Trim();
}
return _curWid;
}
}
private static string GetProjectName()
{
return RoFile.Basename(EditorUtil.GetProject());
}
private static string newTitle;
[MenuItem("Ro/Change Unity Editor Window Title")]
static void ChangeTitle()
{
var title = GetCurEditorTitle();
var pjName = GetProjectName();
if (title.IsMatch(@"Unity - Unity"))
{
if (!title.IsMatch($"^{pjName}"))
{
if (newTitle == null)
{
newTitle = $"{pjName} - {title}";
}
Debug.Log($"Set unity editor title as \"{newTitle}\" ");
Shsu($"xdotool set_window --name \"{newTitle}\" {curWid}");
}
}
}
}https://stackoverflow.com/questions/51968170
复制相似问题