Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Описание

Функция события, которую Unity вызывает после того, как камера визуализирует сцену.

Во встроенном конвейере рендеринга Unity вызывает OnPostRender для MonoBehaviours, которые подключены к тому же GameObject, что и включенная Camera компонент, сразу после этого Camera визуализирует сцену. Используйте OnPostRender для выполнения собственного кода в этой точке цикла рендеринга; например, если вы изменили визуальный эффект в MonoBehaviour.OnPreRender, вы можете изменить его здесь. OnPostRender может быть сопрограммой.

Сведения об аналогичных функциях, не требующих, чтобы сценарий находился в том же игровом объекте, что и компонент камеры, см. в разделе Camera.onPostRender. Аналогичные функции конвейера рендеринга с поддержкой сценариев см. в разделе RenderPipelineManager.

Чтобы выполнить код после того, как Unity отобразит все камеры и графический интерфейс, используйте WaitForEndOfFrame или CommandBuffer.

using UnityEngine; // Скрипт, который при подключении к камере делает результирующий // цвета инвертированы. См. его эффект в режиме воспроизведения. public class ExampleClass : MonoBehaviour { private Material mat; // Будет вызываться из камеры после завершения обычного рендеринга. public void OnPostRender() { if (!mat) { // Unity has a built-in shader that is useful for drawing // simple colored things. In this case, we just want to use // a blend mode that inverts destination colors. var shader = Shader.Find("Hidden/Internal-Colored"); mat = new Material(shader); mat.hideFlags = HideFlags.HideAndDontSave; // Set blend mode to invert destination colors. mat.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusDstColor); mat.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.Zero); // Turn off backface culling, depth writes, depth test. mat.SetInt("_Cull", (int)UnityEngine.Rendering.CullMode.Off); mat.SetInt("_ZWrite", 0); mat.SetInt("_ZTest", (int)UnityEngine.Rendering.CompareFunction.Always); } GL.PushMatrix(); GL.LoadOrtho(); // активируем первый проход шейдера (в данном случае мы знаем, что это единственный проход) mat.SetPass(0); // нарисовать четырехугольник на весь экран GL.Begin(GL.QUADS); GL.Vertex3(0, 0, 0); GL.Vertex3(1, 0, 0); GL.Vertex3(1, 1, 0); GL.Vertex3(0, 1, 0); GL.End(); GL.PopMatrix(); } }

Смотрите так же: Camera.onPostRender, MonoBehaviour.OnPreRender, MonoBehaviour.OnPreCull, CommandBuffer, Extending the Built-in Render Pipeline using CommandBuffers, WaitForEndOfFrame.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3