【Unity】改变游戏运行时Window的窗口标题
【Unity】改变游戏运行时Window的窗口标题
零、需求
Unity打包好的Windows程序,启动后如何更改窗口标题?因为看着英文的感觉不太好,故有此想法。什么?你说为啥不改项目产品名?产品名会被写到文件夹名中,感觉后面可能会有问题……
壹、解决方案
代码如下:
using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; using UnityEngine; public class ChangeWindowTitle : MonoBehaviour { /// <summary> /// 记录当前的窗口标题 /// </summary> public static string TitleText = ""; /// <summary> /// 窗口句柄,只能获取一次,后面获取的无效 /// </summary> private static System.IntPtr windowHandle; /// <summary> /// 是否已经获得窗口句柄 /// </summary> private static bool isGotWindowHandle = false; [Header("Windows窗口标题设置")] [Tooltip("窗口标题文字")] public string title = "窗口"; [Tooltip("是否自动设置窗口标题文字")] public bool autoSet = true; [SerializeField] [Header("标题设置状态")] [Tooltip("标题是否已经设置过至少一次")] private bool isSet = false; #if UNITY_STANDALONE_WIN [DllImport("user32.dll")] private static extern System.IntPtr FindWindow(string className, string windowName); [DllImport("user32.dll", CharSet = CharSet.Unicode, SetLastError = true)] private static extern bool SetWindowText(System.IntPtr hwnd, string title); #endif void Update() { if (autoSet && !isSet) { setTitle(title); } } public void setTitle(string title) { isSet = true; #if UNITY_STANDALONE_WIN TitleText = title; if(!isGotWindowHandle) { // 获取窗口句柄 windowHandle = FindWindow(null, Application.productName); isGotWindowHandle = true; } // 设置新标题 SetWindowText(windowHandle, title); #endif } }
要注意的都写在注释里了(应该)。把它挂到对象上,直接调用public void setTitle(string title)
来设置标题就好啦,要是不想写代码,也可以在面板里设置,默认会帮你设置一次标题窗口的~
好,以上就是全部内容,点个赞再走呗?不会的评论区见~ (◍•ᴗ•◍)❤
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
2021-03-06 【Python】配置pip使用国内镜像源