>  기사  >  웹 프론트엔드  >  Canvas 렌더링 모드에 대한 심층 분석

Canvas 렌더링 모드에 대한 심층 분석

PHPz
PHPz원래의
2024-01-17 09:32:13888검색

Canvas 렌더링 모드에 대한 심층 분석

Canvas의 renderMode에 대한 자세한 설명, 구체적인 코드 예시가 필요합니다

Unity에서 Canvas는 2D UI를 구현하는 가장 기본이자 핵심 컴포넌트입니다. 캔버스에는 렌더링 프로세스 중에 화면 공간과 월드 공간이라는 두 가지 모드가 있습니다. 이러한 렌더링 모드는 특정 상황에 더 적합하므로 프로젝트 요구 사항에 따라 다양한 모드를 선택해야 합니다. 이 기사에서는 Canvas의 두 가지 렌더링 모드와 이를 사용하는 방법에 중점을 둘 것입니다.

  1. Screen Space

Screen Space는 Canvas의 가장 기본적인 렌더링 모드로, 화면에 직접 렌더링하고 화면에 UI 요소를 그립니다. 장면의 객체가 이동하거나 회전하면 UI 요소의 위치가 해당 변경 사항을 따를 수 없습니다. 따라서 이 모드는 게임의 메인 메뉴, 설정 등 고정된 UI 인터페이스에 가장 적합합니다.

1.1 오버레이 모드

오버레이 모드는 화면 공간의 렌더링 모드입니다. 이 모드의 UI 요소는 장면의 독립 레이어에 있으며 장면의 다른 3D 개체와 상호 작용하지 않습니다. 카메라가 움직일 때 이 UI 요소 레이어는 항상 앞에 유지됩니다. 오버레이 모드에서 캔버스의 렌더링 순서는 계층 패널의 캔버스 구성 요소 수준에 따라 결정됩니다.

다음은 샘플 코드입니다.

public Canvas overlayCanvas;

void Start()
{
    overlayCanvas.sortingOrder = 10;
}

이 예에서는 캔버스 구성 요소의 sortOrder 속성을 설정하여 렌더링 대기열에서 이 캔버스의 위치를 ​​결정합니다.

1.2 카메라 모드

카메라 모드는 화면 공간의 또 다른 일반적인 렌더링 모드입니다. 카메라 모드에서는 UI 요소가 독립된 카메라 개체에 바인딩되며, 카메라는 전체 화면을 렌더링하는 대신 UI 캔버스와 관련된 개체만 렌더링합니다. 이 렌더링 모드는 일반적으로 카메라 효과나 폐색이 필요할 때 사용됩니다.

다음은 샘플 코드입니다.

public Canvas cameraCanvas;

void Start()
{
    Camera camera = GetComponent<Camera>();
    camera.targetDisplay = 1;
    cameraCanvas.worldCamera = camera;
}

이 예제에서는 장면에 독립적인 카메라를 생성 및 설정한 다음 UI 요소가 이미지만 렌더링하도록 Canvas의 worldCamera 속성에 카메라 개체를 할당합니다. 카메라 영역을 통해 관찰됩니다.

  1. World Space

World Space 모드는 3D 공간 렌더링을 기반으로 하는 또 다른 Canvas 렌더링 모드입니다. 화면 공간 모드와 비교할 때 월드 공간 모드에서는 UI 요소가 장면의 개체가 이동하고 회전함에 따라 그에 따라 변경되며 장면의 다른 3D 개체와 상호 작용할 수 있습니다. 이 경우 일반적으로 씬 UI를 씬 구성 중에 사용하는 경향이 있습니다.

2.1 오버레이 모드

오버레이 모드는 월드 스페이스에서도 지원됩니다. Screen Space Overlay와 비교하면 World Space Overlay에서는 캔버스와 UI 요소가 장면 개체와 동일한 3D 공간에 있고 UI 요소는 화면이 위치한 평면에 렌더링됩니다.

샘플 코드는 다음과 같습니다.

public Canvas worldCanvas;

void Start()
{
    worldCanvas.renderMode = RenderMode.WorldSpace;
    worldCanvas.transform.position = new Vector3(0f, 0f, 10f);
}

이 예에서는 UI 요소가 장면의 개체에 따라 변경되도록 Canvas 구성 요소의 렌더링 모드를 WorldSpace로 설정했습니다.

2.2 카메라 모드

카메라 모드는 월드 스페이스 모드에도 적합하며 경우에 따라 카메라 모드를 사용하면 성능을 크게 최적화할 수 있습니다. 카메라 모드에서는 UI 요소가 캔버스에 바인딩된 카메라의 보이는 영역에서만 렌더링됩니다. 이 상대적으로 복잡한 설정 방법은 카메라 동작, 장면 전환 등과 같은 3D 장면 UDP의 대규모 UI 작업에서 카메라 모드를 매우 효과적으로 만듭니다.

다음은 샘플 코드입니다.

public Canvas worldCanvas;
public Camera canvasCamera;

void Start()
{
    worldCanvas.renderMode = RenderMode.WorldSpace;
    worldCanvas.worldCamera = canvasCamera;
}

이 예에서는 Canvas의 렌더링 모드를 WorldSpace로 설정한 다음 Canvas의 worldCamera를 바인딩된 카메라로 설정하여 많은 UI 상호 작용과 장면 3D 작업을 수행합니다. .

요약

위의 설명을 통해 Canvas에는 Screen Space와 World Space의 두 가지 렌더링 모드가 있으며, 각 모드는 Overlay와 Camera의 두 가지 렌더링 방법을 지원한다는 것을 알 수 있습니다. 특정 모드에서 렌더링 모드를 선택하는 방법은 응용 프로그램의 장면 요구 사항에 따라 다릅니다. 이 글을 통해 모든 분들이 Unity에서 Canvas를 사용하는 방법에 대해 좀 더 자세히 이해하실 수 있기를 바랍니다.

위 내용은 Canvas 렌더링 모드에 대한 심층 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.