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)
  • 인기 글

  • 태그

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

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

티스토리툴바