107 lines
2.7 KiB
C#
107 lines
2.7 KiB
C#
using UnityEngine;
|
|
|
|
namespace Thousandto.Launcher.ExternalLibs
|
|
{
|
|
/// <summary>
|
|
/// 不透明物体的Bloom处理脚本
|
|
/// </summary>
|
|
[RequireComponent(typeof(Camera))]
|
|
public class OpaqueBloomScript : MonoBehaviour
|
|
{
|
|
[Range(1,10)]
|
|
public float Offset = 2f;
|
|
[Range(0,10)]
|
|
public float Strength = 2f;
|
|
[Range(0,2)]
|
|
public float Threshold = 0.9f;
|
|
[Range(0,2)]
|
|
public float Knee = 0.5f;
|
|
|
|
private OpaqueBloom _logic;
|
|
//是否激活
|
|
public bool _isActive = true;
|
|
|
|
private void Awake()
|
|
{
|
|
if (_logic == null)
|
|
{
|
|
_logic = new OpaqueBloom();
|
|
_logic.Enabled = _isActive;
|
|
}
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
OnPostEffectInit();
|
|
}
|
|
private void OnEnable()
|
|
{
|
|
if (_logic != null)
|
|
{
|
|
_logic.BindCamera(GetComponent<Camera>());
|
|
_logic.RefreshMat();
|
|
}
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
if (_logic != null)
|
|
{
|
|
_logic.BindCamera(null);
|
|
}
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
if (_logic != null)
|
|
{
|
|
_logic.UnInitialize();
|
|
_logic = null;
|
|
}
|
|
}
|
|
|
|
private void OnValidate()
|
|
{
|
|
if (_logic != null)
|
|
{
|
|
_logic.SetOffsetAndStrength(new Vector2(Offset, Offset), Strength);
|
|
_logic.SeThreshold(Threshold, Knee);
|
|
}
|
|
}
|
|
|
|
private void OnPostEffectInit()
|
|
{
|
|
//如果没有初始化完毕,就直接初始化
|
|
if (_logic != null)
|
|
{
|
|
|
|
_logic.Enabled = _isActive;
|
|
_logic.Initialize();
|
|
_logic.SetOffsetAndStrength(new Vector2(Offset, Offset), Strength);
|
|
_logic.SeThreshold(Threshold, Knee);
|
|
_logic.BindCamera(GetComponent<Camera>());
|
|
Debug.Log("后处理初始化处理完毕,IsInited:"+_logic.IsInited);
|
|
}
|
|
}
|
|
|
|
private void OnPostEffectActive(int val)
|
|
{
|
|
var tmp = val > 0;
|
|
|
|
|
|
//根据激活状态来处理
|
|
if (_isActive != tmp)
|
|
{
|
|
_isActive = tmp;
|
|
if (_logic != null)
|
|
{
|
|
_logic.Enabled = _isActive;
|
|
_logic.BindCamera(_isActive ? GetComponent<Camera>() : null);
|
|
_logic.RefreshMat();
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|