셀에서 빠른 스크롤 뷰 만들기

4746 단어 uGUIUnity

입문


이번에 설치한 고속 롤러는 여기 있습니다.
https://github.com/zi-su/ScriptLibrary/tree/master/DataScroller
uGUi 표준 ScrollView 메커니즘을 사용하여 스크롤의 요소를 데이터와 보기로 나누어 제어합니다.
스크롤 중의 각 사이즈가 들쭉날쭉한 상황도 대응한다.

성능 비교


Unity2019.3.0b4 DX11
CPU i7-6700k 4.00GHz
RAM 16.0GB
표준 ScrollView
콘텐츠가 1000개의 GameObject일 때
VerticalLayout 및 ContentSizeFitter를 사용합니다.

굴러가는 과정 중의 처리 부하가 매우 무섭다.
이번 설치 상황
컨텐츠에 4개의 GameObject가 있으며, 스크롤마다 위치 계산 및 업데이트 표시
굴러가는 순간부터 처리 부하가 올라가지만 드물다.

uGUI 스크롤 뷰 정보


uGUI에서 만든 ScrollView를 쉽게 사용할 수 있습니다.
ScrollView를 작성하여 Content 게임 대상에 Vertical Layout과 ContentSizeFitter의 구성 요소를 추가하고 설정하면 자동 레이아웃 계산을 통해 외관이 좋아집니다.
그러나 스크롤 보기의 요소가 100200으로 늘어나면서 문제가 많다.

문제점


uGUI로 제작된 ScrollView는 간단하게 이용할 수 있지만 ScrollView의 크기 마스크 Content 이하의 요소로 제작된다.
커버를 했기 때문에 화면에 표시되지 않은 요소도 모두 묘사되기 때문에 처리 부하가 여분이 되고 요소 수에 비례하는 스크롤 처리도 무거워진다.
또한 실행 과정에서 스크롤 보기를 표시하는 데 필요한 요소를 설치하면 Instantiate 자체의 비용도 큰 문제가 될 수 있습니다.
처리 부하와 요소 수가 비례적으로 상승하는 것이다.
ScrollView를 사용하면 Vertical Layout과 Content Size Fitter에서 계산을 자동 레이아웃에 의뢰하는 것은 매우 쉽지만 게임에서 실제 사용하는 문제는 매우 많다.

속도를 올려야 돼요.


아래의 보도를 참고하였다.
http://tsubakit1.hateblo.jp/entry/2015/01/21/233000
https://qiita.com/k7a/items/7db3a41e39923fd8a3b3
빠른 스크롤
  • 자동 레이아웃 계산 포기
  • ScrollView에서만 표시되는 게임 개체 수 Instantiate
  • 스크롤 시 직접 위치 계산
  • 스크롤 후 표시 업데이트
  • 에서 설명한 대로 해당 매개변수의 값을 수정합니다.

    실시


    내용 이하의 Game Object의 수량이 문제가 될 수 있으므로 이 Game Object를 사용하면 속도를 대폭 높일 수 있습니다.
    구현에 대한 설명을 해야 하기 때문에 원본 코드와 함께 보십시오.

    컨트롤러


    ScrollControllerBase는 스크롤된 계산과 디스플레이의 업데이트를 수행합니다.cs에서 실시합니다.
    초기화를 통해 목록에 데이터를 추가하고 내용 크기를 계산하며 보기로 표시되는 GameObject 수를 계산합니다.
    업데이트에서 위치를 감시하고 Game Object가 화면 밖으로 나타나면 시작 요소를 끝까지 이동하고 끝을 시작으로 이동합니다.

    데이터 및 뷰


    스크롤 객체를 데이터 목록으로 GameObject로 표시하는 뷰를 데이터에서 업데이트합니다.
    데이터로서 ICellData.cs를 만들고 내용에 추가하는 크기가 있는 접근기입니다.
    CellDataBase.cs를 계승하고 실례화하다.
    보기로 ICellView.cs를 만들고 ICellData를 수신하여 보기와 일치하는 형식으로 변환하여 보기 자체를 업데이트합니다.
    CellViewSimple.테스트를 위해 cs를 만들고 크기 정보만 업데이트합니다.

    스크롤 컨트롤러 설정


    모드에서 스크롤이 수평인지 수직인지 설정합니다.
    공간은 굴러가는 원소감의 빈 상황이다.
    Margin은 시작과 끝의 유휴 상태입니다.
    CellPrefab은 스크롤에 추가할 GameObject의 사전 제작 부품입니다.

    Anchor 및 Pivot 설정


    위치 계산을 간소화하기 위해 내용과 내용 아래의 GameObject에 Anchor와 Pivot를 다음과 같이 설정합니다.
    스크롤 방향이 수평일 경우
    Content

    콘텐츠에 추가할 GameObject

    스크롤 방향이 수직일 때
    Content

    콘텐츠에 추가할 GameObject

    마지막


    자산 상점에는 더 높은 기능과 훌륭한 스크립트가 있고 전체 UI 시스템을 만드는 자산도 있으니 즐거우면 사는 것이 좋다.
    https://assetstore.unity.com/packages/tools/gui/enhancedscroller-36378
    https://assetstore.unity.com/packages/tools/gui/doozyui-complete-ui-management-system-138361
    지금까지 설치한 적이 없고 새로운 아이디어를 습득했다면 기술력의 성장과 연결될 수 있는 기회이기 때문에 바퀴를 발명하는 것도 나쁘지 않겠죠.

    좋은 웹페이지 즐겨찾기