unity 启动选择分辨率_Unity发布exe去窗口设置分辨率
前段时间做游戏pc端,要求exe运行去窗口,还要固定分辨率
unity有设置分辨率的API:Screen.SetResolution
但是使用这个会跟win32 api冲突
为了去窗口只有全部使用win32 api
使用win32 api必须先定义,有点像使用c++ dll一样
[DllImport("user32.dll")]
static extern IntPtr SetWindowLong(IntPtr hwnd, int _nIndex, int dwNewLong);
[DllImport("user32.dll")]
static extern bool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
去边框
//SetWindowLong参数
public const int GWL_EXSTYLE= -20; //获得扩展窗口风格。
public const int GWL_HINSTANCE = -6; //获得应用实例的句柄。。
public const int GWL_HWNDPARENT = -8; //如果父窗口存在,获得父窗口句柄。
public const int GWL_ID = -12; //获得窗口标识。
public const int GWL_STYLE = -16; //获得窗口风格。
public const int GWL_USERDATA = -21; //获得与窗口有关的32位值。每一个窗口均有一个由创建该窗口的应用程序使用的32位值。。
public const int GWL_WNDPROC = -4; //获得窗口过程的地址,或代表窗口过程的地址的句柄。必须使用CallWindowProc函数调用窗口过程。
//window style参数
public const int WS_BORDER = 1; //The window has a thin-line border.
public const int WS_POPUP = 0x800000; //The windows is a pop-up window. This style cannot be used with the WS_CHILD style.
public static IntPtr DisableWindowBorder(IntPtr hwnd)
{
if (!CheckPlatform())
return IntPtr.Zero;
return SetWindowLong(hwnd, GWL_STYLE, WS_POPUP);
}
设置分辨率和窗口位置
//ShowWindow参数
public const int SW_FORCEMINIMIZE = 11; //在WindowNT5.0中最小化窗口,即使拥有窗口的线程被挂起也会最小化。在从其他线程最小化窗口时才使用这个参数。
public const int SW_HIDE = 0; //隐藏窗口并激活其他窗口
public const int SW_MAXIMIZE = 3; //最大化指定的窗口
public const int SW_MINIMIZE = 6; //最小化指定的窗口并且激活在Z序中的下一个顶层窗口。
public const int SW_RESTORE = 9; //激活并显示窗口。如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置。在恢复最小化窗口时,应用程序应该指定这个标志。
public const int SW_SHOW = 5; //在窗口原来的位置以原来的尺寸激活和显示窗口
public const int SW_SHOWDEFAULT = 10; //依据在STARTUPINFO结构中指定的SW_FLAG标志设定显示状态,STARTUPINFO 结构是由启动应用程序的程序传递给CreateProcess函数的。nCmdShow=10。
public const int SW_SHOWMAXIMIZED = 3; //激活窗口并将其最大化。nCmdShow=3。
public const int SW_SHOWMINIMIZED = 2; //激活窗口并将其最小化。nCmdShow=2。
public const int SW_SHOWMINNOACTIVE = 7; //窗口最小化,激活窗口仍然维持激活状态。nCmdShow=7。
public const int SW_SHOWNA = 8; //以窗口原来的状态显示窗口。激活窗口仍然维持激活状态。nCmdShow=8。
public const int SW_SHOWNOACTIVATE = 4; //以窗口最近一次的大小和状态显示窗口。激活窗口仍然维持激活状态。nCmdShow=4。
public const int SW_SHOWNORMAL = 1; //激活并显示一个窗口。如果窗口被最小化或最大化,系统将其恢复到原来的尺寸和大小。应用程序在第一次显示窗口的时候应该指定此标志。nCmdShow=1。
const uint SWP_SHOWWINDOW = 0x0040;
public static bool SetWindowPosition(IntPtr hWnd, int winWidth, int winHeight)
{
if (!CheckPlatform())
return false;
//显示器支持的所有分辨率
int i = Screen.resolutions.Length;
int resWidth = Screen.resolutions[i - 1].width;
int resHeight = Screen.resolutions[i - 1].height;
int winPosX = resWidth / 2 - winWidth / 2;
int winPosY = resHeight / 2 - winHeight / 2;
return SetWindowPos(hWnd, 0, winPosX, winPosY, winWidth, winHeight, SWP_SHOWWINDOW);
}
还可以做最大化最小化之类的
做成之后发现虽然这样实现了去边框,设置分辨率,但是是有缺陷的
一般的标准windows应用程序可以在任务栏最小化,关闭,这样设置了后这种操作就不行了
不知道什么原因
后来做exe安装打包,有一个比较好的方法,一般exe需要制作安装程序
程序不做这些设置,打包的时候给exe加上运行参数xx.exe -popup
unity有个运行无窗口的参数,给exe加上就行了,完美解决
unity 启动选择分辨率_Unity发布exe去窗口设置分辨率相关推荐
- 一键修改分辨率bat_求使用批处理BAT设置分辨率的方法介绍?
1:PC 机的组成一 IBM公司在1981年推出了自己的微型计算机,英文名为"Personal Computer",翻译成中文就是"个人计算机". 可以这样认为 ...
- jq fileupload 设置最大文件大小5m_我猜你并不会设置“分辨率”
分辨率对于图片的清晰度和文件大小都有着重要的影响,设计时选择合适的分辨率,既能保证图像质量,又能提高工作效率.然而你的分辨率真的设置对了吗? 使用PS等位图软件开始设计时,新建文件就需要设置好分辨率. ...
- 如何调成适用计算机的分辨率,电脑分辨率多少合适,教您电脑怎么设置分辨率...
不同的电脑显示器有合适的屏幕分辨率,所以如果你感觉看着电脑屏幕时很不舒服,还有很可能影响电脑的性能,就很有可能是电脑分辨率设置的不正确.那么电脑分辨率怎么调?下面,小编给大家介绍电脑设置分辨率的步骤了 ...
- Unity发布Android APK去掉Unity启动Logo教程
Unity发布Android APK去掉Unity启动Logo教程 我们要解决的问题: 黑屏时间问题和启动Logo问题,之所以黑屏是因为Activity启动后mUnityPlayer 中的内容还没有准 ...
- Unity 发布exe文件,连接不上数据库
最近在写一个配置工具,需要用到MySql数据库,在unity里面功能都调试好了,发布exe 的时侯,报错,有关于dll的错误,解决办法: 将其修改为.NET2.0 就可以打包了. 但是发布成exe之后 ...
- 关于UnityPC端打包参数设置及发布PC端时固定分辨率
UnityPC端打包参数设置 主要设置都在PlayerSettings里面 Company Name:设置公司名称 Product Name:设置项目名称,这个获取窗体句柄的时候用的到 Default ...
- Unity 5.6正式版发布,Unity 2017即将来临
最新版Unity 5.6正式发布,也是Unity 5.x系列的最后一个版本.其中包括改进的2D功能,更好的图形性能,新的视频播放器,Progressive Lightmapper预览版,新的光照模式, ...
- Qt发布exe软件及修改exe应用程序图标
1.修改exe应用程序图标 1)准备一个ico图标 需要准备一个ico图标,可以将png图片转换成ico图标,图标大小可以设置成128x128. 可以在图标在线转换网站进行在线转换.转换完毕将xx ...
- Debian初识(选择最佳镜像发布站点加入source.list文件)
选择最佳镜像发布站点加入source.list文件:netselect,netselect-apt "该将哪个Debian镜像发布站点加入source.list文件?".有很多方法 ...
最新文章
- VS Code – No source control providers 解决方法
- [Python图像处理] 三十七.OpenCV直方图统计两万字详解(掩膜直方图、灰度直方图对比、黑夜白天预测)
- NodeJS解决跨域问题:Access-Control-Allow-Origin
- beetl模板入门例子
- 弹簧式止回阀行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- 累次积分怎么计算_【高等数学】二重积分化累次积分方法
- python 读取png图片 透明度
- win7修复计算机 正常启动不了怎么办,Win7系统无法正常启动怎么办
- 芜湖计算机专业学校录取分数线,芜湖市各类高中2018年中考录取分数线是多少...
- 如何打断制图中的CAD图形?
- lol比尔吉沃特服务器未响应,LOL比尔吉沃特9月30日网络波动公告 引起卡机掉线丢包状况...
- Python获取英雄联盟的皮肤原画:新手玩家们都懵了!(一)
- 停车位检测方法研究综述
- C语言入门:计算总成绩和平均成绩
- R语言自学笔记-----数据转换
- springboot项目接入短信
- intel驱动包下载
- 十进制浮点数转成二进制(IEEE 754 在线计算器)
- 八一农垦计算机专业咋样,黑龙江八一农垦大学(专业学位)计算机技术考研难吗...
- CocosCreator横版格斗游戏Demo(三):添加敌人到场景