post processing в unity не работает
Перед возникновением проблемы я обновил проект Unity до версии 2021.1.23f1. Затем проект откатили до версии 2020.3.0f1 по совету друга: ему кто-то сказал, что новая версия юнити баганая и не работает должным образом.
В итоге директива using UnityEngine.Rendering.PostProcessing перестала работать, хотя раньше работала. В чём может быть проблема?
Код скрипта, использующий директиву:
using UnityEngine;
using UnityEngine.Rendering.PostProcessing;
public class NightCollider : MonoBehaviour
{
public NightChanger nightChanger;
public PostProcessVolume volume;
public const float TO_NIGHT_GRADIENT_START = 0.25f;
public const float TO_NIGHT_GRADIENT_END = 0.5f;
public const float TO_DAY_GRADIENT_START = 0.8f;
public const float NIGHT_GRADIENT_DURATION = TO_NIGHT_GRADIENT_END - TO_NIGHT_GRADIENT_START;
public const float DAY_GRADIENT_DURATION = 1 - TO_DAY_GRADIENT_START;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (nightChanger.timeProgress < TO_NIGHT_GRADIENT_START)
{
volume.weight = 0f;
}
else if (nightChanger.timeProgress >= TO_NIGHT_GRADIENT_START && nightChanger.timeProgress < TO_NIGHT_GRADIENT_END)
{
volume.weight = (nightChanger.timeProgress - TO_NIGHT_GRADIENT_START) * (1 / NIGHT_GRADIENT_DURATION);
}
else if (nightChanger.timeProgress >= TO_NIGHT_GRADIENT_END && nightChanger.timeProgress < TO_DAY_GRADIENT_START)
{
volume.weight = 1f;
}
else
{
volume.weight = 1 - (nightChanger.timeProgress - TO_DAY_GRADIENT_START) * (1 / DAY_GRADIENT_DURATION);
}
}
}
Ответы (1 шт):
Автор решения: Acsell
→ Ссылка
Используйте вместо класса PostProcessingVolue просто Volue Вот пример
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.HighDefinition;
public class PostProcessing : MonoBehaviour
{
[SerializeField]
private Volume _volume;
private DepthOfField _depthOfField;
private void Start()
{
_volume = GetComponent<Volume>();
_volume.profile.TryGet<DepthOfField>(out _depthOfField);
}
public void OnBlure()
{
_depthOfField.active = true;
}
public void OffBlure()
{
_depthOfField.active = true;
}
}