Unity 问题 之 UGUI 的 Mask 真机打包的遮罩效果失效问题的简单处理
一、简单介绍
Unity 问题整理,自己整理的一些游戏开发遇到的问题做简单整理,方便游戏开发。
本节介绍,在使用 cardboard 做 XR 开发中,在使用 Mask 遮罩的时候,编辑器下 Mask 的 遮罩效果正常,但是运行到真机上,Mask 的遮罩效果却失效了,这里简单说明,如果你有更好的方法,欢迎留言交流。
二、问题背景
1、UI 组件上添加 Mask 组件
2、Mask 效果
三、问题现象
1、真机上效果,Mask 遮罩效果失效
四、解决方案
1、可能是 Disable Depth and Stencil 勾选了建议可以把勾选去掉,打包测试下看看
2、如果上面没有解决掉的话,可以在 Camera 上挂载一个空的后期处理,让系统自己做一下 stencil 修复
其中,NoEffectPostProcess.cs 代码为:
using UnityEngine;
[RequireComponent(typeof(Camera))]
public class NoEffectPostProcess : MonoBehaviour
{
/// <summary>
/// 空后期处理(没有处理的后期处理)
/// </summary>
/// <param name="source"></param>
/// <param name="destination"></param>
private void OnRenderImage(RenderTexture source, RenderTexture destination)
{
Graphics.Blit(source, destination);
}
}
3、如果上面的问题还有的解决,那就使用其他的遮罩,代替 Mask ,例如使用 SoftMask代替 Mask
SoftMask 使用介绍:Unity 工具 之 SoftMask软遮罩 实现 UI 边缘渐变过渡的简单使用介绍_unity 渐变遮罩
4、或者使用 Rect Mask 2D 解决方案
(Rect Mask 2D 是 渐变边缘的遮罩,不一定能满足各种需求)