Version: 5.3 (switch to 5.4b)
언어English
  • C#
  • JS

Script language

Select your preferred scripting language. All code snippets will be displayed in this language.

MonoBehaviour.OnPostRender()

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

닫기

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

닫기

취소

Switch to Manual

Description

OnPostRender는 카메라가 씬(scene)의 렌더링을 마친 후에 호출됩니다.

스크립트가 카메라에 첨부되고 활성화 되어 있는 경우에만 호출됩니다. OnPostRender는 함수안에 간단히 yield 구문을 사용해서 co-routine으로 실행할 수 있습니다.

OnPostRender는 카메라가 모든 오브젝트를 렌더링한 뒤에 호출됩니다. 카메라가 렌더링을 완료하고 GUI가 렌더링 된 후에 어떤 작업을 추가로 하고 싶은 경우에 WaitForEndOfFrame coroutine을 사용합니다.

See Also: OnPreRender, WaitForEndOfFrame.

no example available in JavaScript
using UnityEngine;

// A script that when attached to the camera, makes the resulting // colors inverted. See its effect in play mode. public class ExampleClass : MonoBehaviour { private Material mat;

// Will be called from camera after regular rendering is done. 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 ();

// activate the first shader pass (in this case we know it is the only pass) mat.SetPass (0); // draw a quad over whole screen 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 (); } }