Unity - 최종 프로젝트 FPS게임 만들기 -3-

한예준·2025년 7월 4일

오늘은 인벤토리 UI를 만들어보았다. 하지만 내가 선택한 무기의 3D 모델을 UI 상으로 띄우는 데에 어려움을 겪어서 마무리하지 못했다. 해결을 위해 방법을 찾아봤고 두가지 방법을 알 수 있었다.


오늘 작업 내용

Inventory UI

RenderTexture + RawImage 방식

  • WeaponPreview 레이어 생성

  • Render Texture (예: 512×512) 에셋 생성 →WeaponPreviewRT

  • Preview 카메라 생성

    • Culling Mask → WeaponPreview 레이어만
    • Target Texture → WeaponPreviewRT
    • 월드 공간의 모델만 렌더링하도록 세팅
  • UI Canvas

    • RawImage 컴포넌트에 WeaponPreviewRT 할당
    • 코드 흐름 (InventoryUI.cs)
    // 모델 Instantiate
    currentPreview = Instantiate(weaponPrefab, previewContainer);
    currentPreview.transform.localPosition = Vector3.zero;
    currentPreview.transform.localRotation = Quaternion.identity;
    // Preview 레이어 지정
    SetLayerRecursively(currentPreview, LayerMask.NameToLayer("WeaponPreview"));

RenderTexture 없이 — Cinemachine & Screen Space–Camera Canvas

  • Canvas Render Mode → Screen Space–Camera, Render Camera에 Virtual Camera 연결
  • Preview용 빈 GameObject(PreviewTarget) 위치에 모델 Instantiate
  • Cinemachine Virtual Cameras
    • previewCam (인벤토리 전용)
    • OpenInventory 시
    previewCam.Priority = 100;
    • CloseInventory 시 Priority 되돌리기
  • 장점
    • 별도 텍스처 없이 UI + 3D를 동일 카메라로 렌더링
    • Cinemachine 블렌딩으로 자연스러운 전환

결과

  • URP라서 그런지, 아니면 무엇이 잘못된지는 모르지만 UI 상 RawIamge에 오브젝트가 보이지 않았다.

0개의 댓글