Описание
Делегат, который можно использовать для выполнения пользовательского кода после того, как Camera отобразит сцену.
Во встроенном конвейере рендеринга Unity вызывает onPostRender
после завершения рендеринга любой камерой. Чтобы выполнить пользовательский код на этом этапе, создайте обратные вызовы, соответствующие сигнатуре CameraCallback, и добавьте их к этому делегату.
Похожие функции, применимые только к одной камере и требующие, чтобы ваш скрипт находился на том же игровом объекте, см. в разделе MonoBehaviour.OnPostRender. Аналогичные функции конвейера рендеринга с поддержкой сценариев см. в разделе RenderPipelineManager.
Чтобы выполнить код после того, как Unity отобразит все камеры и графический интерфейс, используйте WaitForEndOfFrame или CommandBuffer.
using UnityEngine;
public class CameraCallbackExample : MonoBehaviour
{
// Add your callback to the delegate's invocation list
void Start()
{
Camera.onPostRender += OnPostRenderCallback;
}
// Unity calls the methods in this delegate's invocation list before rendering any camera
void OnPostRenderCallback(Camera cam)
{
Debug.Log("Camera callback: Camera name is " + cam.name);
// Unity calls this for every active Camera.
// If you're only interested in a particular Camera,
// check whether the Camera is the one you're interested in
if (cam == Camera.main)
{
// Put your custom code here
}
}
// Remove your callback from the delegate's invocation list
void OnDestroy()
{
Camera.onPostRender -= OnPostRenderCallback;
}
}
Смотрите так же: CameraCallback, Camera.onPreRender, Camera.onPreCull, MonoBehaviour.OnPostRender, CommandBuffer, Extending the Built-in Render Pipeline using CommandBuffers, WaitForEndOfFrame.