一般的界面会有一个背景,然后背景上方放一个plane,该plane可以把背景模糊,
有很多种方法,比如取GrabPass然后缩小,取样,高斯模糊再放大,
但是这种方法效率依然不适合移动端,(不知道博客园能不能被编辑,图片我想以后再补充)
<2019年7月20日,二次修改补图>
我下面介绍一种方法:
需要两张图片一个遮罩层 背景1(正常背景)/背景2(已经在PS中模糊的背景)/Mask(plane的形状)
如图所示,Mask为简单的方形
Mask,模糊后的img 都是scrollball的子对象
固定背景img是scrollball的父对象,
问题被简化为,使模糊后的img和固定背景img保持相对静止,
即:
public virtual void OnValueChanged(Vector2 scrollVector) { BlurTransform.GetComponent<RectTransform>().position = transform.GetComponent<RectTransform>().position; }
这种形式, 因为实现比较简单,就不写demo了
这种方式可以很高效的在移动端模拟出背景动态模糊,因为只是对一张已经模糊过的图,利用scroll和mask来显示不同部位而已。