Unity : PlayerEndOfFrame

2023. 7. 21. 15:25·Unity
반응형

Unity에서 개발자는 원하는 게임 메커니즘을 달성하기 위해 다양한 내장 시스템으로 작업하는 데 익숙합니다. 이러한 기능 중 하나는 개발자가 다양한 작업에 사용하는 코루틴입니다. 이 블로그 게시물에서는 특정 코루틴 관련 개념인 PlayerEndOfFrame에 대해 자세히 살펴보고 그것이 무엇인지, 사용법 및 Unity 게임 루프의 필수 부분인 이유에 대해 논의합니다.

Unity 코루틴이란??

PlayerEndOfFrame을 살펴보기 전에 Unity 코루틴을 간단히 살펴보겠습니다. 코루틴은 실행을 일시 중지하고 중단된 위치에서 다시 시작할 수 있는 기능입니다. "지금은 할 만큼 했으니 잠시 쉬고 다음에 계속하겠습니다."라고 말하는 것과 같습니다. 이 '중단'은 특정 시간, 조건이 충족될 때까지 대기하거나 프레임이 끝날 때까지 대기하여 주제로 이동할 수 있습니다.

PlayerEndOfFrame이 무엇인가요?

PlayerEndOfFrame은 화면에 프레임을 표시하기 직전에 Unity가 모든 카메라와 GUI를 렌더링한 후 프레임이 끝날 때까지 코루틴의 연속을 지연시키는 양보 명령입니다. 실제 명령은 yield return new WaitForEndOfFrame();입니다.

Unity 게임 루프 및 PlayerEndOfFrame

PlayerEndOfFrame의 중요성을 이해하려면 각 프레임에 대해 다음 단계를 포함하는 Unity 게임 루프를 이해해야 합니다.

  • 처리 입력
  • 게임 물리학 업데이트
  • 게임 로직 업데이트
  • 렌더링
  • 프레임 종료

PlayerEndOfFrame은 마지막 단계에서 이 루프에 적합하므로 개발자가 렌더링 후 요소를 조작할 수 있지만 프레임을 플레이어에 표시하기 전에 가능합니다.

PlayerEndOfFrame 사용 사례

PlayerEndOfFrame은 모든 렌더링 계산 후 프레임 끝에 변경 사항을 적용해야 하는 시나리오에서 유용합니다. 예를 들어 렌더링된 개체를 기반으로 카메라의 위치를 조정하거나 특수 렌더링 후 효과를 추가할 수 있습니다. 프레임 렌더링 후 화면 내용을 이미지로 캡처할 수도 있습니다.

PlayerEndOfFrame을 사용한 실제 Unity 예제

예를 들어 특정 게임 순간에 스크린샷을 캡처하려고 한다고 가정합니다. PlayerEndOfFrame을 사용하여 수행하는 방법은 다음과 같습니다.

C#Copy code
IEnumerator CaptureScreenshot()
{
    // Wait till the last possible moment at the end of the frame
    yield return new WaitForEndOfFrame();

    // Create a texture the size of the screen, RGB24 format
    Texture2D screenshot = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);

    // Read screen contents into the texture
    screenshot.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);

    screenshot.Apply();

    // Do something with the screenshot (e.g., save it as a PNG file)
}

위의 예에서 우리는 스크린샷이 화면에 나타날 프레임의 최종 시각적 상태를 캡처하는지 확인합니다.

PlayerEndOfFrame 및 최적화

PlayerEndOfFrame은 편리한 도구이지만 이 시점에서 수행되는 모든 작업이 프레임의 총 처리 시간에 추가될 수 있음을 기억하십시오. 따라서 원활한 프레임 속도와 최적의 게임 성능을 유지하기 위해 필요한 작업만 여기에서 수행되는지 확인하십시오.

결론

Unity의 PlayerEndOfFrame을 이해하면 개발자는 Unity의 게임 루프 내에서 게임 동작이 실행되는 방법과 시기를 더 잘 제어할 수 있습니다. 처음에는 복잡해 보일 수 있지만 적절하게 사용하면 게임의 전반적인 느낌과 성능에 크게 기여할 수 있습니다.

저작자표시 비영리 변경금지 (새창열림)

'Unity' 카테고리의 다른 글

Unity : Quality Settings  (1) 2023.07.28
Universal Render Pipeline (URP)  (1) 2023.07.22
Unity : Mesh Renderer  (0) 2023.07.19
Unity : Android Toast Message  (0) 2023.07.19
Unity Animator State : 애니메이션 상태 검사  (0) 2023.07.18
'Unity' 카테고리의 다른 글
  • Unity : Quality Settings
  • Universal Render Pipeline (URP)
  • Unity : Mesh Renderer
  • Unity : Android Toast Message
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    C#
    codingcommunity
    devlife
    파이썬
    Python
    스마트스토어리뷰
    programmerlife
    unity
    쇼핑몰리뷰
    rtsp
    셀레니움
    스크립트 실행 순서
    스크립트 실행
    리스트
    상품 리뷰 크롤링
    리뷰관리
    programming101
    믈레코비타멸균우유
    cv2
    카페24리뷰
    라떼우유
    list
    유니티
    ipcamera
    appdevelopment
    긴유통기한우유
    카페24리뷰이관
    learntocode
    리뷰이관
    codingtips
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
Unity : PlayerEndOfFrame
상단으로

티스토리툴바