首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何永远更改unity编辑器的标题格式

如何永远更改unity编辑器的标题格式
EN

Stack Overflow用户
提问于 2018-08-22 21:36:57
回答 2查看 932关注 0票数 2

当前unity编辑器标题格式如下:

代码语言:javascript
运行
复制
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项目名称放在前面,例如:

代码语言:javascript
运行
复制
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编辑器标题

EN

回答 2

Stack Overflow用户

发布于 2018-08-23 01:48:23

我不确定你已经尝试了什么,这是否是你所说的"system c++“的意思,但我已经成功地用这个更改了标题。(您需要将其附加到GameObject)

仅适用于Windows tho。但不管怎样,我还是要把这个放到这里。

代码语言:javascript
运行
复制
[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添加到上面的代码之后,这不再是问题了。

票数 0
EN

Stack Overflow用户

发布于 2018-08-23 12:39:01

我目前的解决方案是在EditorApplication.update中检查和更改标题,我使用linux xdotool来获取和设置标题,我认为windows和mac有类似的解决方案,如果我打开太多的unity编辑器,它会非常慢,我仍然希望找到一个本地的方法来获取和设置unity编辑器的标题。

代码语言:javascript
运行
复制
    [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}");
                }
            }
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51968170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档