본문 바로가기

[내배캠] 본 캠프 개발 학습/매일매일 쓰는 TIL

1월 13일 월요일 본 캠프 개발일지

📌

캐릭터 커스텀 기능을 급하게 추가하면서 활용한 더 텍스처 기술을 정리해보려고 한다. 

학습 내용 


1. 도입 과정
2. 렌더 텍스처
3. 주의사항 


1. 도입 과정

✅ UI에 3D 모델을 함께 표시하려면?

일반적으로 UI는 화면에 직접 그려지는 반면, 3D 모델을 포함한 게임 오브젝트는 씬 내부에 배치되어 카메라가 이를 렌더링하는 방식으로 처리된다. 즉, 동일한 게임 씬에 존재하더라도 UI와 3D 오브젝트는 서로 다른 렌더링 영역을 가진다.

 

✅ 두 개의 카메라를 활용한 방식

초기에는 별도의 카메라를 추가하여 UI 내에서 3D 모델을 표시하는 방법을 고려했다. 그러나 Unity 버전에 따른 카메라 프로퍼티의 차이로 인해 이를 적절히 설정하는 과정에서 많은 시간이 소요되었으며, 다중 카메라 설정이 번거로웠다. 이에 따라, 튜터님의 조언을 바탕으로 Render Texture를 활용하는 방식으로 전환하게 되었다.

2. 렌더 텍스처 

✅ 렌더 텍스쳐?

Render Texture(렌더 텍스처)는 Unity에서 카메라의 렌더링 결과를 텍스처로 저장하는 기능이다. 이를 통해 특정 카메라가 렌더링한 씬의 내용을 UI 또는 다른 오브젝트의 머티리얼에 실시간으로 적용할 수 있다.

렌더 텍스처는 단순히 오브젝트의 머티리얼을 변경하는 데 사용하는 것이 아니라, 3D 모델의 애니메이션, 동작(예: 달리기, 공격 모션 등) 및 실시간 변화를 UI 상에서 표시하는 용도로 활용할 수 있다. 이 방식은 특히 인벤토리, 캐릭터 선택 화면, 미니맵, 감시 카메라 화면 등의 기능을 구현할 때 유용하다.

 

렌더 텍스처 - Unity 매뉴얼

렌더 텍스처는 Unity가 런타임 시점에 생성하고 업데이트하는 텍스처입니다. 렌더 텍스처를 사용하려면 Assets > Create > Render Texture를 사용하여 새 렌더 텍스처를 생성한 후 Camera 컴포넌트의 타겟

docs.unity3d.com

 

✅ 사용 방법

 

사용 방법은 정말 매우 간단하다. 나는 아래 블로그를 그대로 따라했다. 

 

유니티) 렌더텍스쳐 Render Texture

랜더텍스처 Render Texture는 런타임에서 생성 및 갱신되는 특수한 Texture입니다. 사용하려면 먼저 새 렌더 텍스처를 만들고 Cameras 중 하나를 지정하여 거기에 렌더링합니다. 이제 정상적인 텍스처처

funfunhanblog.tistory.com

랜더 텍스처를 통해 UI에 3D 모델을 정상적으로 띄웠다면 클릭에 따라 해당 모델의 머테리얼이 바뀌는 코드를 추가하면 잘 작동하는 모습을 볼 수 있다!

    public void SelectCustomCharacter(int index) // 커스텀 선택 시 사용
    {
        switch (index)
        {
            case 0:
                Material basic = Resources.Load<Material>("SamuraiZ01");
                characterModel.GetComponent<Renderer>().material = basic; // 기본
                characterCustomType = 0;
                break;
            case 1:
                Material purple = Resources.Load<Material>("SamuraiZ02");
                characterModel.GetComponent<Renderer>().material = purple; // 보라
                characterCustomType = 1;
                break;
            case 2:
                Material red = Resources.Load<Material>("SamuraiZ03");
                characterModel.GetComponent<Renderer>().material = red; // 레드 
                characterCustomType = 2;
                break;
        }
    }

3. 주의사항  

✅ 화면에 보여지는 모델의 화질이 깨진다면 로우 이미지의 크기를 조절하면 된다. 

✅ 카메라를 하나 더 생성할 때 오디오 리스너는 하나만 가지고 있도록 하자.


요즘 초반보다 더 열심히 하고 있어서 정리를 잘 못하고 있다...

마지막까지 화이팅 할 수 있도록 하자~!