Files
Dontback/Assets/Scripts/Camera/CameraPostProcessing.cs
Eicy c9d29f2a68 AI补足注释(已经快看不懂了)
实现i18n
优化部分模块的逻辑以优化性能
修复物品展示框打开时按下ESC唤出暂停菜单但没有暂停的bug

Signed-off-by: Eicy <im@crash.work>
2024-10-14 21:37:04 +08:00

56 lines
2.0 KiB
C#

using Event;
using UnityEngine;
using UnityEngine.Rendering.PostProcessing;
namespace Camera
{
// 处理相机的后期处理效果
public class CameraPostProcessing : MonoBehaviour
{
private UnityEngine.Camera _camera; // 参考相机组件
private PostProcessVolume _processVolume; // 后期处理体积
private void Awake()
{
// 获取相机和后期处理组件
_camera = GetComponent<UnityEngine.Camera>();
_processVolume = GetComponent<PostProcessVolume>();
}
private void OnEnable()
{
// 订阅事件
EventManager.Instance.PlayerRunning += PostProcess; // 玩家开始跑步时激活后期处理效果
EventManager.Instance.PlayerRunStop += ProcessingStop; // 玩家停止跑步时禁用后期处理效果
}
private void OnDisable()
{
// 取消订阅事件
EventManager.Instance.PlayerRunning -= PostProcess;
EventManager.Instance.PlayerRunStop -= ProcessingStop;
}
// 启动后期处理效果
private void PostProcess()
{
// 插值设置相机视野
_camera.fieldOfView = Mathf.Lerp(_camera.fieldOfView, 90f, Time.deltaTime * 10f);
// 插值设置色差强度
var chromaticAberration = _processVolume.profile.GetSetting<ChromaticAberration>();
chromaticAberration.intensity.value = Mathf.Lerp(chromaticAberration.intensity.value, 1f, Time.deltaTime * 10f);
}
// 停止后期处理效果
private void ProcessingStop()
{
// 插值设置色差强度归零
var chromaticAberration = _processVolume.profile.GetSetting<ChromaticAberration>();
chromaticAberration.intensity.value = Mathf.Lerp(chromaticAberration.intensity.value, 0f, Time.deltaTime * 10f);
// 插值设置相机视野回到默认值
_camera.fieldOfView = Mathf.Lerp(_camera.fieldOfView, 60f, Time.deltaTime * 10f);
}
}
}