位置: IT常识 - 正文

Unity实战篇 | 使Unity打包的exe程序始终保持屏幕最前端【文末送书】(unity udim)

编辑:rootadmin
Unity实战篇 | 使Unity打包的exe程序始终保持屏幕最前端【文末送书】

推荐整理分享Unity实战篇 | 使Unity打包的exe程序始终保持屏幕最前端【文末送书】(unity udim),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity如何用,unity udim,unity如何用,unity的urp,unity uwa,unityz,unity ulua,unityui,内容如对您有帮助,希望把文章链接给更多的朋友!

🎬 博客主页:https://xiaoy.blog.csdn.net

🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉

🎄 学习专栏推荐:Unity系统学习专栏

🌲 游戏制作专栏推荐:游戏制作

🌲Unity实战100例专栏推荐:Unity 实战100例 教程

🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

📆 未来很长,值得我们全力奔赴更美好的生活✨

------------------❤️分割线❤️-------------------------

文章目录📢前言🎬Unity实战篇 |使Unity打包的exe程序始终保持屏幕最前端一、编写核心脚本代码二、将应用程序打包成Exe并运行测试三、效果展示💬总结👑评论区抽奖送书🎁规则🎄推荐理由(⭐⭐⭐⭐⭐)📢前言大家在平时使用一些软件APP的时候,会看到有些软件打开后有个选项可以将该窗口置顶。置顶之后这个窗口就会显示在屏幕最前方,不会被其他应用窗口遮挡。想要实现这个功能的话在Unity中并没有找到相关的API可以直接拿来使用。所以在查阅一番资料之后,最终选择使用Windows句柄调用相关文档API来实现。下面就来看看怎样操作吧,可以将文中关键脚本挂载到相关场景中就可以使用该功能。🎬Unity实战篇 |使Unity打包的exe程序始终保持屏幕最前端

一、编写核心脚本代码

实现该功能主要是使用了几个关键的Windows的API,分别是下面几个函数:

ShowWindow 函数SetWindowPos函数SetForegroundWindow函数

其中关键函数的意义和关键参数,可以到指定链接查看详细信息,这里就不多做阐述了。

辅助脚本:C.cs

using System;using System.Diagnostics; using System.Runtime.InteropServices; public class C{ public delegate bool WNDENUMPROC(IntPtr hwnd, uint lParam); [DllImport("user32.dll", SetLastError = true)] public static extern bool EnumWindows(WNDENUMPROC lpEnumFunc, uint lParam); [DllImport("user32.dll", SetLastError = true)] public static extern IntPtr GetParent(IntPtr hWnd); [DllImport("user32.dll")] public static extern uint GetWindowThreadProcessId(IntPtr hWnd, ref uint lpdwProcessId); [DllImport("kernel32.dll")] public static extern void SetLastError(uint dwErrCode); public static IntPtr GetProcessWnd() { IntPtr ptrWnd = IntPtr.Zero; uint pid = (uint)Process.GetCurrentProcess().Id; // 当前进程 ID bool bResult = EnumWindows(new WNDENUMPROC(delegate (IntPtr hwnd, uint lParam) { uint id = 0; if (GetParent(hwnd) == IntPtr.Zero) { GetWindowThreadProcessId(hwnd, ref id); if (id == lParam) // 找到进程对应的主窗口句柄 { ptrWnd = hwnd; // 把句柄缓存起来 SetLastError(0); // 设置无错误 return false; // 返回 false 以终止枚举窗口 } } return true; }), pid); return (!bResult && Marshal.GetLastWin32Error() == 0) ? ptrWnd : IntPtr.Zero; } }

核心脚本如下:WindowActive.cs

//公众号:呆呆敲代码的小Yusing UnityEngine;using System.Runtime.InteropServices;using System;public class WindowActive : MonoBehaviour{ [DllImport("User32.dll")] extern static bool SetForegroundWindow(IntPtr hWnd); [DllImport("User32.dll")] extern static bool ShowWindow(IntPtr hWnd, short State); [DllImport("user32.dll ")] public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); static readonly IntPtr HWND_TOPMOST = new IntPtr(-1); const UInt32 SWP_NOSIZE = 0x0001; const UInt32 SWP_NOMOVE = 0x0002; IntPtr hWnd; //public float Wait = 0;//延迟执行 //public float Rate = 1;//更新频率 public bool KeepForeground = true;//保持最前 void Start() { hWnd = C.GetProcessWnd(); Active(); //InvokeRepeating("Active", Wait, Rate); } /// <summary> /// 激活窗口 /// </summary> void Active() { if (KeepForeground) { ShowWindow(hWnd, 1); SetForegroundWindow(hWnd); SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); } }}

把这个脚本直接挂到摄像机就OK了,发布之后可以看效果,编辑模式下看不到效果。

二、将应用程序打包成Exe并运行测试

我这里是用了一个西红柿闹钟的项目用作测试,因为之前使用该闹钟想提高自己的工作效率时发现该闹钟老是容易被其他应用程序遮挡住,所以才想到让他持续运行在屏幕最前端不被盖住,从而督促自己。

打包的时候需要注意一下Build的配置,改成Windowed模式,启用Run In background,开启Resizable Window。

Unity实战篇 | 使Unity打包的exe程序始终保持屏幕最前端【文末送书】(unity udim)

此处的配置是可以让我们打包出来的应用程序可以自由调节窗口大小,且可以后台持续运行。

具体打包的配置功能可以在此文章中查阅: Unity打包必备知识 | Player Setting 面板的 Player属性详解【重要】

此时我们点击Build,然后用电脑运行该应用程序即可。

三、效果展示

在打包出来的文件夹中点击exe文件即可运行。

运行效果如下: 该西红柿闹钟的exe文件会一直显示在屏幕最前方不会被其他窗口盖住。

💬总结本文简单介绍了在Unity中使Unity打包的exe程序始终保持屏幕最前端的方法。主要是引用了Windows的编程库来完成的功能,如果你有更好的方法也欢迎指出学习哦!之前还写过一篇文章也是用来调节窗口配置,同样使用了Windows句柄方法。Unity实战篇 |Unity 打包exe 实现隐藏窗口标题栏、隐藏最小化最大化关闭按钮解决:“Unity打包非全屏游戏,运行时仍然全屏” 的问题👑评论区抽奖送书

最后在评论区进行抽取三名幸运的小伙伴送下面这本书籍

在这里搞个小活动抽奖送给大家,对看书感兴趣的小伙伴可以参加一波呀,抽中概率很大哦!

《剪辑师手册:视频剪辑与创作从入门到精通(剪映版)》

视频剪辑对大多数人来说都可以作为一个爱好和副业去研究,所以本次给大家带来的是一本视频剪辑的书。 对于想学习视频剪辑的小伙伴,这本书就可以让你了解相关知识,对症下药可以极大地提高学习效率!

🎁规则

规则如下:

🚀 规则如下🚀

给本篇博客文章 点赞 收藏 评论 三连,然后就可以在博客文章评论区抽奖送一本剪辑师手册的书籍!

总共抽三本,中的几率还是很大的哦~ 想看书的小伙伴参与起来!

中奖信息文章发布时间的三天后下午本篇文章评论区公布!记得留意呀!

没抽到的,但是喜欢这本书的小伙伴也可以在网上自行购买哈,官方正品商店购买即可!

🚀 规则如上🚀 🎄推荐理由(⭐⭐⭐⭐⭐)

高品质的视频越来越受欢迎,作为想要入职视频创作、剪辑与制作行业的人,需要不断提升自身的能力,才能不断收集到好的素材,有新颖的创意,有娴熟的剪辑技巧,有不断满足观看者的特效,

1本书精通剪映手机版+电脑版:60多个抖音爆款案例剖析+115集同步教学视频+330个练习素材文件+精美的PPT课件,28万粉丝都喜欢的剪辑与创作技巧,让你快速成长为行业大咖!

没抽到的小伙伴也可以官方平台自行购买哦: 当当自营购买链接:http://product.dangdang.com/29490878.html

最后再提一下,世界读书日 马上就来啦,北大出版社也有对应的活动,所以大家喜欢看书的一定要把握住这次机会嗷,下次还早着,千万不要错过啦!

北京大学出版社,4月“423世界读书日”促销活动安排来啦 当当活动日期:4.6-4.11,4.18-4.23 京东活动日期: 4.6 一天, 4.17-4.23 活动期间满100减50或者半价5折销售 希望大家关注参与423读书日北大社促销活动

如果实在喜欢但是没抽到你的话,可以在评论区说一下,后续可以再给大家继续送福利!

本文链接地址:https://www.jiuchutong.com/zhishi/299046.html 转载请保留说明!

上一篇:用css 添加手状样式,鼠标移上去变小手(css加小手)

下一篇:render函数(gym版本和render函数)

  • 网站推广运用中原创文章的作用(网站推广运用中心是什么)

    网站推广运用中原创文章的作用(网站推广运用中心是什么)

  • ipad mini6电池容量多大(ipadmini6电池容量不到5000)

    ipad mini6电池容量多大(ipadmini6电池容量不到5000)

  • 快充和闪充的区别(快充和闪充的区别是线还是充电器)

    快充和闪充的区别(快充和闪充的区别是线还是充电器)

  • 华为手机怎么换皮肤(华为手机怎么换键盘)

    华为手机怎么换皮肤(华为手机怎么换键盘)

  • 线程是一段子程序对吗(线程是进程的一个实例,线程是程序运程中的)

    线程是一段子程序对吗(线程是进程的一个实例,线程是程序运程中的)

  • 美团和摩拜单车通用吗(美团和摩拜单车是什么关系)

    美团和摩拜单车通用吗(美团和摩拜单车是什么关系)

  • 开心手机恢复大师能恢复微信聊天记录吗(开心手机恢复大师官网下载)

    开心手机恢复大师能恢复微信聊天记录吗(开心手机恢复大师官网下载)

  • 11pro录屏在哪里(iphone11 pro录屏)

    11pro录屏在哪里(iphone11 pro录屏)

  • 荣耀v30pro第一次充电充多久(荣耀v30新手机第一次充电要充多久)

    荣耀v30pro第一次充电充多久(荣耀v30新手机第一次充电要充多久)

  • 华为锁屏后自动亮屏幕(华为锁屏后自动关机怎么回事)

    华为锁屏后自动亮屏幕(华为锁屏后自动关机怎么回事)

  • 看qq看点会被好友发现吗(看qq看点会被好友看到吗)

    看qq看点会被好友发现吗(看qq看点会被好友看到吗)

  • 乐视电视连不上网络怎么办(乐视电视连不上无线网络身份验证出现问题)

    乐视电视连不上网络怎么办(乐视电视连不上无线网络身份验证出现问题)

  • 二进制数110011转换成八进制数是(二进制数110011转换成八进制数是计算过程)

    二进制数110011转换成八进制数是(二进制数110011转换成八进制数是计算过程)

  • nova6与nova6se的区别(nova6跟nova6se)

    nova6与nova6se的区别(nova6跟nova6se)

  • helio g90t相当于骁龙多少(helio g90t 800u)

    helio g90t相当于骁龙多少(helio g90t 800u)

  • 华为手机如何删除本地音乐(华为手机如何删除通讯录中的联系人)

    华为手机如何删除本地音乐(华为手机如何删除通讯录中的联系人)

  • 手机dmg停止什么意思(手机dmg已停止是什么意思)

    手机dmg停止什么意思(手机dmg已停止是什么意思)

  • qq在线文档怎么发送(qq在线文档怎么发到群里让大家都填)

    qq在线文档怎么发送(qq在线文档怎么发到群里让大家都填)

  • 手机qq怎样改群名片(手机qq怎么修改群成员名片)

    手机qq怎样改群名片(手机qq怎么修改群成员名片)

  • 苹果11抬头灯怎么开启(苹果抬头灯怎么弄)

    苹果11抬头灯怎么开启(苹果抬头灯怎么弄)

  • 电脑显示器能用机顶盒吗(电脑显示器能用电视代替吗)

    电脑显示器能用机顶盒吗(电脑显示器能用电视代替吗)

  • 淘宝达人头像怎么换(淘宝达人在哪儿打开)

    淘宝达人头像怎么换(淘宝达人在哪儿打开)

  • iphone测距仪准吗(iphone测距仪能测多远)

    iphone测距仪准吗(iphone测距仪能测多远)

  • 落日时分的香巴拉过山车剪影,西班牙塔拉戈纳萨洛 (© Joaquim F. P./Getty Images)(落日时光)

    落日时分的香巴拉过山车剪影,西班牙塔拉戈纳萨洛 (© Joaquim F. P./Getty Images)(落日时光)

  • dedecms织梦显示副栏目文章的方法(织梦前台数据不能存入中文)

    dedecms织梦显示副栏目文章的方法(织梦前台数据不能存入中文)

  • 什么是增值税的混合销售行为
  • 财税筹划课程
  • 转让金融资产需要交税吗
  • 红字发票信息表盖章位置图片
  • 百旺金赋的服务费必须交吗
  • 出口的商品交消费税吗
  • 劳务报酬增值税和个人所得税都要交吗
  • 货拉拉电子货票收款凭证是发票吗
  • 公司有食品流通证能卖保健品吗
  • 现金流是资产吗
  • 企业所得税广告费结转先扣哪一年
  • 发票隔月报送可以么?
  • 固定资产采购计入什么科目
  • 印花税,车船税通过应交税金科目吗
  • 事业单位其他应付款如何核销
  • 工程完成投资入什么科目核算与怎么写其会计分录?
  • 发放股票股利要考虑时间权重吗
  • 附税分录怎么做?
  • 发票停票会自动恢复吗
  • 以货抵债会计处理
  • 公司为员工交的五险一金到底是怎么回事
  • 基建拨款账务处理
  • 电子税务局哪里打印发票
  • 小规模纳税人适用的增值税征收率
  • 1697508991
  • 季度申报利润表怎么填
  • 公益性捐赠所得税处理
  • 这个月只有销项没有进项怎么申报
  • windows10如何调出虚拟键盘
  • 农产品的增值税率
  • 纳税申报表怎么打印
  • 单位代扣公积金比例
  • 研发费用没有发票可以加计扣除吗
  • 抵扣后增值税税率
  • html页面中利用______标签可引入jquery库
  • 增值税留抵退税账务处理
  • 应收票据的基本要素包括
  • 火灾烧毁物品如何取证
  • 违约金需要缴纳企业所得税吗
  • css盒子如何居中
  • 借款合同印花税怎么做账
  • 开源项目有什么用
  • thinkphp版本区别
  • vue+element-ui项目
  • 增值税减免附加税用计提吗
  • 开发票零税率和免税是一样的意思吗
  • 没有发票能办临时牌照吗
  • 工会收到单位拨款的会计分录
  • python缺失值的解决方法
  • mysql怎么处理特殊字符数据
  • 应付福利费算支出吗
  • 企业欠缴税款违法吗
  • sqlserver存储过程写法
  • Keepalived+HAProxy实现MySQL高可用负载均衡的配置
  • 出售无形资产属于资产处置损益吗
  • 企业营业外收入要交所得税吗
  • 民办非盈利组织注销了在哪登报
  • 工资能否当月计提当月发放
  • 无固定合同有哪些好处
  • 主营业务收入核算项目组合表
  • 预收账款科目账龄怎么算
  • 货代代缴增值税关税如何做账
  • 出租不动产如何缴纳增值税
  • 服务器托管税率
  • 新单位建账怎么做
  • 买别人的银行卡是啥罪
  • 备查账一般采用什么账簿
  • win8分屏快捷键
  • 如何打开和关闭HMB
  • debian与centos详细对比区别
  • android程序的基本结构
  • 关于中秋节的古诗
  • android保存文件到本地
  • 三角进攻怎么打
  • javascript面向对象吗
  • 安卓接口回调例子
  • 报价单盖什么公章
  • 北京大兴国税局领导班子
  • 开票软件登录失败怎么办
  • 大管家多少集
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设