当前统一编辑器标题格式如下:
Unity - Unity 2017.4.6f1 Personal (64bit) - TestMoveAndJump.unity - Ro.Unity - PC, Mac & Linux Standalone <OpenGL 4.5>
在应用切换器和任务栏中很难识别,因为“ Unity-Unity 2017.4.6f1 Personal(64bit)”太长了,我希望将Unity项目名称放在首位,例如:
Ro.Unity Unity - Unity 2017.4.6f1 Personal (64bit) - TestMoveAndJump.unity - Ro.Unity - PC, Mac & Linux Standalone <OpenGL 4.5>
我应该怎么做,我可以在系统c ++中更改统一窗口标题,但是我发现统一编辑器标题在很多情况下会被重置,所以我希望在统一编辑器脚本中设置统一编辑器标题的方法
答案 0 :(得分:0)
我不确定您尝试过什么,如果这是“系统c ++”的意思,则无法确定,但是我已经成功地使用它更改了标题。 (您需要将此附加到GameObject)
仅适用于Windows tho。但是无论如何我都会把它扔在这里。
<a href="https://example" ping="https://example/trackpings">
有很多统一的方法来获取标题中的信息,[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
添加到上面的代码中之后,这不再是问题。
答案 1 :(得分:0)
我当前的解决方案是在EditorApplication.update中检查并更改标题,我使用linux xdotool来获取和设置标题,我认为Windows和Mac具有类似的解决方案,如果我打开太多的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}");
}
}
}
}