【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)来设置标题就好啦,要是不想写代码,也可以在面板里设置,默认会帮你设置一次标题窗口的~
好,以上就是全部内容,点个赞再走呗?不会的评论区见~ (◍•ᴗ•◍)❤

posted @   清风来叙  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
历史上的今天:
2021-03-06 【Python】配置pip使用国内镜像源
点击右上角即可分享
微信分享提示