프로그램에서 UI 하면 많이 쓰이는 방식 중 하나가 스크롤이 달린 리스트입니다.스크롤 뷰(Scroll View)를 이용하면 간단하게 만들 수 있습니다. 연관글 영역 1. UI에 스크롤 뷰 추가 1) 게임 오브젝트(GameObject) > UI > 스크롤 뷰(Scroll View)를 선택하여 UI 화면에 스크롤 뷰를 추가합니다.추가한 스크롤 뷰의 이름을 'List View'로 해줍니다. 2) 스크롤 활성/비활성 시키기스크롤 뷰를 추가하면 가로/세로 스크롤이 모두 자동(Auto)로 되어 있습니다.이 프로젝트에서는 세로 스크롤만 사용하므로 가로는 끄고, 세로는 항상 표시되도록 수정해야 합니다. 'List View'를 선택합니다.인스팩터에서 'Scroll Rect' 항목을 봅니다.가로(Horizontal)..
스크롤 바(Scroll Bar)를 이용하여 구현한다는 것은 스크롤 뷰를 직접 구현하는 것입니다. 연관글 영역 1. 레이아웃 만들기 스크롤 바가 될 UI를 만들겠습니다. 1) 빈 오브젝트(Create Object)를 생성하고 이름을 'Scroll Bar'로 넣고 크기와 위치를 지정합니다. 2) 빈 오브젝트 안에 UI 패널(GameObject > UI > Panel)을 넣고 이름을 'PanelContent'로 넣습니다. 3) 'PanelContent'의 'Rect Transform'속성에 앵커 프리셋(Anchor Presets)을 선택하여 'middle center'로 선택해 줍니다. 4) 'PanelContent'에 이미지(GameObject > UI > Image)를 넣습니다. 5) 'PanelCont..
유니티(Unity) UI에서 스크롤을 쓰는 방법은 크게 스크롤 뷰(Scroll View)를 쓰는 방법과 패널에 스크롤 바(Scroll bar)를 연결하는 방법이 있습니다.빠르고 편하게 쓸 생각이면 스크롤 뷰를 쓰는 것이 좋고 직접 커스텀하게 만들 생각이면 스크롤 바를 연결하는 것이 좋습니다. 이 포스팅에서는 스크롤 뷰(Scroll View)를 다룹니다. 연관글 영역 1. UI에 추가 게임 오브젝트(GameObject) > UI > 스크롤뷰(Scroll View)를 선택하여 U I화면에 스크롤 뷰를 추가합니다. 스크롤 할 내용은 콘텐츠(Content) 안에 넣어야 합니다. 2. 내용 넣기 스크롤 될 영역의 크기는 '콘텐츠(Content)' 영역의 크기를 따라갑니다.콘텐츠 영역을 적절히 늘려야 스크롤이..
미니맵에 상호작용이 필요하다면 이전에 설명한 두 가지 방식은 사용하기가 매우 까다롭습니다. 미니맵용 카메라도 메인카메라처럼 상호작용이 된다면 따로 추가 작업을 할 필요가 없습니다.이게 가능하려면 화면에 카메라를 2개 표시하면 되겠죠?그게 바로 뷰포트(Viewport)를 이용한 방법입니다. 연관글 영역 1. 카메라 생성미니맵용 카메를 생성해 줍니다.미니맵의 확대 축소와 같은 기능을 넣으려면 '투사(Projection)'를 원근(Perspective)으로 설정해야 합니다. 2. 뷰포트 설정 뷰포트는 카메라를 화면에 표시하는 위치를 지정하는 기능입니다. 이 값은 비율입니다.1=100%입니다. 메인 카메라의 경우 'X:0,Y:0, W:1,H:1'이렇게 되어 있습니다.이렇게 되면 항상 화면크기와 일치하게 됩니..
로 이미지(Raw Image)로 UI에 미니맵을 띄우던 이전 포스팅이랑 거의 동일합니다.단지 3D 오브젝트에 표시한다는 차이가 있을 뿐이죠. 그래서 엄밀하게 말하면 미니맵을 구현한다기보다는 카메라를 3D오브젝트에 표시하는 것입니다. 연관글 영역 1. 텍스처 생성 카메라가 보는 화면을 렌더링할 택스처를 생성해야 합니다.프로젝트 창에서 오른쪽 클릭 > 생성 > 렌더 텍스처 를 선택하여 원하는 이름으로 텍스처를 만듭니다. 2. 카메라 생성 미니맵용 카메라를 생성합니다. 미니맵의 확대 축소와 같은 기능을 넣으려면 '투사(Projection)'를 원근(Perspective)으로 설정해야 합니다.'타겟 텍스처(Target Texture)'를 위에서 생성한 텍스처로 설정해 줍니다. 3. 텍스처를 출력할 오브젝..
미니맵은 보통 UI에 표시하므로 '로 이미지(Raw Image)'를 사용하는 방법을 많이 쓰게 됩니다.단, 이 방법은 미니맵 카메라와는 상호작용을 할 수 없습니다. 연관글 영역 1. 텍스처 생성카메라가 보는 화면을 렌더링할 텍스처를 생성해야 합니다. 프로젝트 창에서오른쪽 클릭 > 생성 > 렌더 텍스처를 선택하여 원하는 이름으로 텍스처를 만듭니다. 여기서는 'RawImageTexture'로 이름을 지었습니다. 2. 카메라 생성 미니맵용 카메라를 생성합니다.미니맵의 확대 축소와 같은 기능을 넣으려면 '투사(Projection)'를 원근(Perspective)으로 설정해야 합니다. '타겟 텍스처(Target Texture)'를 위에서 생성한 텍스처로 설정해 줍니다. 3. UI에 로 이미지(Raw Ima..
유니티에서 미니맵을 구현하는 방법은 크게 3가지로 나눌 수 있습니다.(직접 구현하는 건 제외) 로 이미지(Raw Image) : UI공간에서 사용합니다.렌더러 택스처(Render Texture) : 3D공간에서 사용합니다.카메라의 뷰포트(Viewport) : 화면 영역에서 사용합니다. 이 포스팅은 구현에 필요한 공통 내용을 다룹니다.각각의 구현은 다음 포스팅에서 다룹니다. 연관글 영역 1. 각각의 장단점 여기서는 간단한 설명만 합니다.자세한 설명은 각각을 구현하는 포스팅에서 하도록 하겠습니다. 1-1. 로 이미지(Raw Image)UI에 표시할 때 사용하는 방법입니다.'UI Canvas'에서 동작하므로 다루기가 쉽습니다. 문제는 카메라가 렌더링한 이미지만 표시하는 것이므로 카메라와 상호작용을 할 수 없..
이 포스팅은 어드레서블(Addressable)에서 지정한 라벨(Lable)를 기준으로 한 번에 로드하여 사용하는 것을 다룹니다. 다른 포스팅은 한 개씩 로드하여 사용하는 예제였습니다.한 개씩 로드하는 방식은 여러 개를 로드하려면 각각 나머지 리소스가 로드되었는지 확인하는 코드를 직접 구현하여야 합니다. 하지만 어드레서블에서는 여러 개의 리소스를 한 번에 로드하는 기능을 제공하므로 따로 구현할 필요가 없습니다. * 이 포스팅은 '흔한 개발자의 메모장'님의 코드를 참고하여 작성되었습니다. * 연관글 영역 0. 리소스 준비 프리팹은 아래와 같이 등록되어 있습니다. 한 번에 여러 개의 리소스를 불러올 때는 경로(Path)는 몰라도 됩니다.정확히는 로드가 끝나면 리소스의 경로를 조회할 수 있으므로 어떻게 관리..
어드레서블(Addressable)은 비동기(Async)로 사용하는 것이 기본입니다. 문제는 프로젝트가 크지 않다면 이득이 크지 않은데 그에 비해 코드가 복잡해진다는 단점 있습니다. 어드레서블에서 리소스를 사용하는 사이클은 크게 3부분으로 나눕니다. 1) 리소스 로드 2) 리소스 사용하여 인스턴스 만들기 3) 인스턴스 해제 연관글 영역 0. 리소스 준비 프리팹은 아래와 같이 등록되어 있습니다. 원하는 리소스를 한 개만 로드하려는 경우 해당 리소스의 경로(Path)를 알고 있어야 합니다. 비동기로 사용하는 경우 함수가 끝나고 유니티의 라이프사이클에 따라 동작 순서가 달라집니다.그래서 비동기 처리가 끝나면 동작할 함수를 따로 만들어서 관리해야 합니다.(이런 이론적인 내용은 여기서 다룰 게 아니라서 그냥 넘..
어드레서블(Addressable)은 비동기(Async)로 사용하는 것이 기본이지만 동기(Sync)로도 사용할 수 있습니다.규모가 크지 않은 프로그램에서는 굳이 비동기로 리소스를 처리할 이유가 없으므로 동기로 사용하는 방법부터 알아보겠습니다. 어드레서블에서 리소스를 읽어 들이는 건(Load)메모리에 올리는 작업이 아닙니다.스크립트에서 유니티의 프리팹을 사용할 때와 똑같습니다.개체 읽어 들이는 과정과 개체를 화면에 표시('계층 구조'에 추가)하는 단계를 따로 처리해야 하는 것과 같습니다. 어드레서블에서 리소스를 사용하는 사이클은 크게 3부분으로 나눕니다.1) 리소스 로드2) 리소스 사용하여 인스턴스 만들기3) 인스턴스 해제 연관글 영역 0. 리소스 준비 프리팹은 아래와 같이 등록되어 있습니다. 원하는 리소..