Описание
EventFunctions, которую Unity вызывает перед тем, как Camera визуализирует сцену.
Во встроенном конвейере рендеринга Unity вызывает OnPreRender
для MonoBehaviours, которые подключены к тому же GameObject, что и включенная Camera компонент непосредственно перед тем, как камера визуализирует сцену. Используйте OnPreRender
для выполнения собственного кода в этой точке цикла рендеринга; например, вы можете изменить визуальные настройки, чтобы повлиять на сцену во время рендеринга данной камеры. OnPreRender
может быть сопрограммой.
Сведения об аналогичных функциях, не требующих, чтобы сценарий находился в том же игровом объекте, что и компонент камеры, см. в разделе Camera.onPreRender. Аналогичные функции конвейера рендеринга с поддержкой сценариев см. в разделе RenderPipelineManager.
Unity вызывает OnPreRender
после того, как камера выполнит операцию отбраковки. Это означает, что если вы вносите изменения, влияющие на то, что видит камера, изменения вступят в силу со следующего кадра. Чтобы изменить то, что камера видит в текущем кадре, используйте MonoBehaviour.OnPreCull.
Когда Unity вызывает OnPreRender
, цель рендеринга камеры и текстуры глубины еще не настроены. Если вам нужен доступ к ним, вы можете выполнить код позже в цикле рендеринга, используя CommandBuffer.
// Этот скрипт позволяет включать/отключать туман для каждой камеры.
// включив или отключив скрипт в заголовке Инспектора
// вы можете включить или выключить туман для каждой камеры.
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
private bool revertFogState = false;
void OnPreRender()
{
revertFogState = RenderSettings.fog;
RenderSettings.fog = enabled;
}
void OnPostRender()
{
RenderSettings.fog = revertFogState;
}
}
Смотрите так же: Camera.onPreRender, MonoBehaviour.OnPreCull, MonoBehaviour.OnPostRender, CommandBuffer, Extending the Built-in Render Pipeline using CommandBuffers.