Почему я получаю сообщение об ошибке на TryGetSettings при использовании постобработки v2? И как я могу это исправить? - PullRequest
0 голосов
/ 28 апреля 2020

В редакторе на моей камере я добавил два компонента: слой после обработки и объем после обработки. В первом компоненте слой, который я изменил, на слой, который я добавил. PostProcessing. Во втором компоненте я установил для параметра Is Global значение true и добавил. один эффект на данный момент Depth Of Field

Теперь я хочу изменить и установить значения глубины фокусного расстояния с помощью скрипта. Поэтому я создал новый скрипт:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering.PostProcessing;

public class PostprocessingEffects : MonoBehaviour
{
    private PostProcessVolume postProcessVolume;
    private DepthOfField depthOfField;

    void Start()
    {
        postProcessVolume = GetComponent<PostProcessVolume>();
        postProcessVolume.profile.TryGetSettings(out PostProcessEffectSettings depthOfFieldSettings);

        depthOfField.focalLength.value = 1f;
    }
}

Я получаю сообщение об ошибке на линии:

postProcessVolume.profile.TryGetSettings(out depthOfField);

На TryGetSettings и ошибка:

Тип «PostprocessingEffects» нельзя использовать в качестве параметра типа «T» в типе generi c или методе «PostProcessProfile.TryGetSettings (out T)». Не существует неявного преобразования ссылок из 'PostprocessingEffects' в 'UnityEngine.Rendering.PostProcessing.PostProcessEffectSettings'.

Пробовал также:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering.PostProcessing;

public class PostprocessingEffects : MonoBehaviour
{
    private PostProcessVolume postProcessVolume;
    private DepthOfField depthOfField;

    void Start()
    {
        postProcessVolume = GetComponent<PostProcessVolume>();
        postProcessVolume.profile.TryGetSettings(out DepthOfField depthOfField);

        depthOfField.focalLength.value = 1f;
    }
}

1 Ответ

0 голосов
/ 28 апреля 2020

Кажется, вы используете неправильный тип.

TryGetSettings не может принять тип PostprocessingEffects Я полагаю, что вы хотите DepthOfField Попробуйте:

postProcessVolume.profile.TryGetSettings(out DepthOfField depthOfField);

из, если у вас есть ваша переменная уже определена:

private DepthOfField depthOfField;
postProcessVolume.profile.TryGetSettings(out depthOfField);

Также убедитесь, что у вас есть эффект глубины резкости, прикрепленный к объему постобработки в инспекторе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...