在内置渲染管线中,Unity 会在 摄像机 组件启用的同一 GameObject 上附加的 MonoBehaviour 上调用 OnPreRender
,就在该摄像机渲染场景之前。使用 OnPreRender
在渲染循环的这一点执行您自己的代码;例如,您可以更改视觉设置以影响给定摄像机渲染时的场景。OnPreRender
可以是一个协程。
对于不需要脚本与摄像机组件位于同一 GameObject 上的类似功能,请参阅 Camera.onPreRender。对于可脚本化渲染管线中的类似功能,请参阅 RenderPipelineManager。
Unity 在摄像机执行剔除操作后调用 OnPreRender
。这意味着,如果您进行影响摄像机视野的更改,则更改将从下一帧开始生效。要对当前帧中摄像机看到的內容进行更改,请使用 MonoBehaviour.OnPreCull。
当 Unity 调用 OnPreRender
时,摄像机的渲染目标和深度纹理尚未设置。如果您需要访问这些纹理,则可以使用 CommandBuffer 在渲染循环的稍后执行代码。
// This script lets you enable/disable fog per camera. // by enabling or disabling the script in the title of the Inspector // you can turn fog on or off per camera.
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; } }