URP透明窗口
基本说明
使用kirurobo/UniWindowController: Makes your Unity window transparent and allows you to drop files提供的透明黄口组件。
安装Package
-
A. 使用 Unity Package Manager (UPM)
-
在 Unity 编辑器中打开 [Window] -> [Package Manager]。
- 点击 [+] 按钮,选择 [Add package from git URL...]。
-
输入以下链接并点击 [Add]:
https://github.com/kirurobo/UniWindowController.git#upm -
B. 使用 UnityPackage
- 从 Release 页面 下载
.unitypackage文件。 - 将该资源导入到Unity 项目中。
使用
找到该Package的文件目录,按Kirurobo\Kirurobo\UniWindowController\Runtime查找UniWindowController预制体,并拖入场景层级(Hierarchy)中。

此处也可以在场景中自行创建一个空对象,并挂载Uni Window Controller组件。
参数
Uni Window Controller组件提供了以下可自定义的属性:
点击展开参数说明
| Property | type | Note |
|---|---|---|
| isTransparent | bool | 是否开启窗口透明 |
| isTopmost | bool | 是否开启窗口置顶 |
| isZoomed | bool | 是否最大化窗口,也可以用来获取当前窗口是否最大化 |
| isHitTestEnabled | bool | 是否启用命中检测。 开启后,插件会自动检测鼠标下方是否有像素(alpha通道),如果是透明则穿透窗口。 |
| isClickThrough | bool | 是否开启鼠标穿透,适用于非透明区域 |
URP的单独处理
默认情况下,urp的后处理(Posting)和透明窗口不兼容,Post相关Shader返回三通道的颜色,为了能在透明窗口上进行后处理,需要手动修改urp的默认Shader文件,以返回四通道的颜色。
定位当前项目使用的配置文件
展开Window>Package Manager选项卡,查看Universal RP的版本。

打卡项目根目录,进入项目根目录\Library\PackageCache\,找到com.unity.render-pipelines.universal@版本号,将整个文件夹复制到项目根目录\Packages\下。
这一步的目的是拉取urp文件作为自定义配置文件。
修改配置文件
进入项目根目录\Packages\com.unity.render-pipelines.universal@14.0.11\Shaders\PostProcessing、,找到UberPost.shader进行修改。
打开文件,找到以下内容:
half4 FragUberPost(Varyings input) : SV_Target
{ UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input);
float2 uv = SCREEN_COORD_APPLY_SCALEBIAS(UnityStereoTransformScreenSpaceTex(input.texcoord));
float2 uvDistorted = DistortUV(uv);
half3 color = (0.0).xxx; //在这之后添加内容
...
return half4(color, 1.0);
}
从这里可以看出,urp进行后处理时默认不对透明度进行处理,且直接返回alpha=1.0的颜色。因此,我们需要修改Shader,使它将输入的Alpha通道暂存,并在最后和rgb通道一并返回。
共有两个修改点:
1.找到half3 color = (0.0).xxx;,在下方增加以下内容,声明变量暂存输入的alpha通道并存入值;
2.找到return half4(color, 1.0),将1.0修改为先前声明的alpha,以打包返回。
保存文件,此后就能正常地使用urp进行后处理且保持透明窗口。
注意事项
需要注意,许多后处理的效果是针对全屏的,即便保留了透明度。
此外,复制过来的urp包中有大量无用且对增加版本控制难度的文件,以下目录下的内容可以完全删除:
Documentation~Samples~Tests