以《多元窗口》为例:在 Unity URP 中实现透明窗口
创始人
2025-03-24 09:20:00
0

似乎是初次来到 indienova?好吧,其实不是,我不太清楚怎么看自己的注册时间,但我确定我很早以前就逛 indienova。应该是 18 年,那个时候,我还在用 Gamemaker Studio 2,还在上初三,看的都是 indienova 的教程。转眼高中三年,大学四年,虽然不能说这几年全都在做游戏,也不能说这几年真的在 indienova 活跃过几天,但眼下早就换到了 Unity,并且开发出了《多元窗口》(MultiWindows)这样一部独特作品的早期试玩版,也该来这个我独立精神的启蒙之地分享点东西了。

虽然《多元窗口》现在有一个试玩版,但那只是为了验证游戏是否能在大多数人电脑上运行的技术测试版本,眼下我还在做更多有意思的游戏内容。前段时间,我看到 B 站有位 UP 主做了很独特的桌宠技术演示视频,其实我本来就研究过透明窗口的相关技术,也有很多人早就讨论过这方面的内容,前不久还看到有位大佬在 indienova 分享了他的桌面挂机游戏技术。但是我得说,这个演示视频里的 URP 透明可比一般的技术厉害多了。

Universal Render Pipeline 算是新版本 Unity 主推的渲染管线,不仅在 3D 光照方面效果出众,甚至还有十分方便的 2D 灯光。光照系统可以很方便地补足美术上的不足,让游戏的整体氛围感更加浓厚,下图是本人之前制作的《ReRevue》,运用了 URP 的 2D 光照,还算很好地结合到了 2.5D 的视觉方案之中,利用光照和舞台概念掩盖了美术资源不足的问题。

不过,如果只是单纯地在一个普通的透明窗口游戏中导入 URP 并且能运行,那我也不会写这篇文章。实际上,只有使用 Unity 自带的 Built-in 渲染管线,才可以通过将相机背景设置为透明来实现透明窗口效果。在 URP 中,是不能直接这样去做的,还需要一些额外设置。

如果是 URP 老版本(即低于 14),可以直接看上面那位视频 UP 大佬的 Github 项目,已经相当完善了:在后处理前对颜色进行判断,如果检测到相机背景颜色,则输出 Alpha 为 0 的颜色。不过,由于老版本的 URP 太过拉跨,还要涉及到本地化 UPR Package 并修改 Uber Post 的操作。

在较新版本的 URP 中,原项目使用的 Blit 已经无法使用了,也不需要修改 Uber Post ,但还需要做其他的修改。首先是关闭项目设置中的 DXGI 交换链,接着关闭相机与 URP 设置中的 HDR 选项(HDR 无法最终输出透明)。然后,利用新版本的 Full Screen Render Feature,去制作一个全屏效果处理。

在这里,我使用了两个 Shader 来完成最终的效果。首先是 TransparentWindow,我其实不太会 Shader 方面的内容,以前也没怎么用过,只会照葫芦画瓢——所以这里就是我用 Shader Graph 连连看搞出来的东西,功能也不过是比较颜色,如果检测到指定颜色(相机背景颜色),则输出黑色透明像素(黑色是为了在编辑器中预览的时候方便排查,实际不需要,这里的 colorMask 确实重复了)。

而 LimitedMaxAlpha 则是针对一个很独特的情况进行的保险措施。经过测试,在渲染时,如果后处理中包含了更亮的颜色,例如十分强劲的泛光效果,新版 URP 会将最亮颜色的 Alpha 值视为 1(即不透明),而会按比例下调非最亮颜色的 Alpha 值。这会导致一个结果,如果泛光之类的后处理太亮,会导致整个游戏不该透明的地方都透明,而不是没有遮挡的地方透明,有遮挡的地方完全不透明。因此,在后处理后,利用这个 Shader 调整整体的 Alpha 值,可以使得无论后处理多么强劲,都维持 Alpha 值在合理的范围内(其实我也不太清楚这个方案是否可以完全解决问题,只能说目前这个“It just works”,但也有可能在其他情况下出现问题)。

而代码方面,基本上就是简单地调用 WindowAPI 修改窗口样式,然后启用 URP 的透明输出。

经过多次尝试,这里必然会导致窗口的标题栏消失,而加上标题栏,就会导致透明效果失效。暂时无法确定是什么原因所致,但似乎只能这样去处理。如果需要在保留标题栏的同时去实现 URP 透明效果,就不能有光影,那么可以使用 GetLayeredWindowAttributes 实现颜色剔除来解决问题。

最终效果演示:5 个不同颜色的方块,以及较大的 URP 泛光。

相关内容

热门资讯

金迈驰取得双工位工作台专利提高... 国家知识产权局信息显示,浙江金迈驰智能科技有限公司取得一项名为“一种双工位工作台”的专利,授权公告号...
主播说:6位扎根一线的南都人,... 在南都N视频,我们的记者、编辑、主播,以纸笔、以键盘、以镜头、以麦克风……报告事实,传递信息,表达观...
连接器领域优选东莞市何谐新能源... 在新能源与**制造产业蓬勃发展的当下,连接器作为设备间信号与能量传输的关键部件,其性能与质量直接影响...
聚焦北大荒|八五四分公司品种改... 近日,在北大荒股份八五四分公司第四管理区办公室内,前来咨询优质稻品种的种植户络绎不绝,种植户是见证了...
原创 突... 2026年1月17日凌晨,大家都还没睡醒的时候,西昌卫星发射中心那边传来消息,长征三号乙火箭发射实践...
海泽康济取得面膜液浸湿装置专利... 国家知识产权局信息显示,湖南海泽康济生物科技有限公司取得一项名为“一种面膜液的浸湿装置”的专利,授权...
原创 生... 《生存33天》是一款由三七互娱打造的末日生存类手游,凭借先进的物理引擎技术,将末日环境刻画得极其真实...
向AI要增长:一堂课如何重塑企... 顶端新闻首席记者 吴军 实习生 冀艺星/文 2026年初,八部门联合推动的《“人工智能+制造”专项行...
我们终于卖出去的,不是廉价商品... 《我们终于卖出去的,不是廉价商品,而是“硬实力”》 ——从工业机器人净出口,看中国制造正在改写一条底...
有望推动全固态锂电池产业化 本报讯(记者 方梦宇)记者近日从中国科学技术大学获悉,该校教授马骋针对全固态锂电池在循环时因需要维持...
工业机器人净出口国带来的启示:... 海关总署日前发布的数据显示,2025年我国工业机器人出口首次超过了进口,同比增长48.7%,成为工业...
维力谷取得卫星双模天线组件专利... 国家知识产权局信息显示,深圳市维力谷无线技术股份有限公司取得一项名为“一种卫星双模天线组件”的专利,...
方洪波:要“壮士断臂”,白电和... 新京报贝壳财经讯(记者陈维城)1月16日,美的集团董事长兼总裁方洪波向员工发表主题演讲提到,2025...
卓胜微取得一种声波器件专利,抑... 国家知识产权局信息显示,江苏卓胜微电子股份有限公司取得一项名为“一种声波器件”的专利,授权公告号CN...
2026年民营航天首次火箭发射... 鲁网1月16日讯 (记者 郑泽之)1月16日04时10分,我国太原卫星发射中心在山东日照附近海域成功...
原创 安... 捡漏老机皇其实是一件特别明智的事情,尤其是在如今手机更新换代如跑马灯般的时代,很多所谓的“新款”往往...
原创 S... S42为什么这么难上分?官方给出真实原因,外挂人数突破新高,很多玩家在王者峡谷里被打到怀疑人生时,第...
科技昨夜今晨0117:曝四家厂... “科技昨夜今晨”时间,大家好,现在是 2026 年 1 月 17 日星期六,今天的重要科技资讯有: ...
视频丨从发现险情到“换乘”返回... 2026年1月16日,中国航天员科研训练中心在北京航天城举行神舟二十号乘组与记者见面会。这是神舟二十...
一次性关闭102家门店,贾国龙... 文/李影 一口气关闭102家门店,贾国龙与西贝为“预制菜风波”付出的代价远超想象。 一家餐饮巨头的...