一般的界面會有一個背景,然后背景上方放一個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來顯示不同部位而已。