[Résolu] Fixer par code le postprocessing d'une caméra
Publié : 21 Août 2022 21:50
Bonsoir,
j'ai souhaité vérifier que les caméras d'une scène avaient bien la case Post Processing cochée (dans la section Renderer). En l'absence de propriété identifiée, j'ai cherché sur les forums anglophones et la solution était dans la classe UniversalAdditionalCameraData (le mystérieux script ajouté par Unity à chaque caméra d'un projet avec URP).
Testé avec 2021.3 et URP 12.1.
j'ai souhaité vérifier que les caméras d'une scène avaient bien la case Post Processing cochée (dans la section Renderer). En l'absence de propriété identifiée, j'ai cherché sur les forums anglophones et la solution était dans la classe UniversalAdditionalCameraData (le mystérieux script ajouté par Unity à chaque caméra d'un projet avec URP).
Code : Tout sélectionner
// Liste les caméras de la scène.
Camera[] camerasArray= Component.FindObjectsOfType<Camera> ();
// Teste si le projet utilise URP (voir un de mes posts précédents).
Type RenderPipelineType = GraphicsSettings.defaultRenderPipeline.GetType ();
Type URPType = typeof (UniversalRenderPipelineAsset);
bool urp = RenderPipelineType.Equals (URPType);
RenderPipelineAsset currentRP = GraphicsSettings.defaultRenderPipeline;
print ("currentRenderPipeline : " + GraphicsSettings.currentRenderPipeline.name);
foreach (Camera camera in camerasArray)
{
camera.targetDisplay = 0;
if (urp)
{
UniversalAdditionalCameraData cameraData = camera.GetUniversalAdditionalCameraData ();
cameraData.renderPostProcessing = true;
}
}