PageSelectorBase

Пространство имён:AHG.CaseSimulatorRedux
public abstract class PageSelectorBase : MonoBehaviour

Подключенные библиотеки:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

Описание

Базовый класс для селекторов с переключением страниц.

Внимание

Этот класс используется только для наследования от него, и дальнейшей реализации.

Приватные сериализуемые поля

Примечание

Все сериализуемые значения изменяются в инспекторе.

Настройки селектора

protected int pageCapacity

Количество слотов на странице.

Объекты

protected Transform slotsParent

Ссылка на Transform компонент объекта, который является родителем для слотов.

protected GameObject slotPrefab

Ссылка на префаб слота.

protected Button nextPageBtn

Ссылка на UI Button, который служит кнопкой переключения страницы вперёд.

protected Button prevPageBtn

Ссылка на UI Button, который служит кнопкой переключения страницы назад.


Свойства и поля

protected abstract int SlotsCount { get; }

Общее количество слотов, которое надо отобразить в селекторе.

Важно

Это свойство нужно реализовать дочернему объекту.


Публичные методы

Примечание

virtual - возможно переопределение метода в дочерних объектах.

public virtual void Load()

Инициализировать слоты и открыть первую страницу.

public virtual void Clear()

Очистить пул слотов.

public virtual void ChangePage(int dir)

Сменить страницу в зависимости от направления.

  • -1 - прошлая страница.
  • 1 - следующая страница.
dir:Направление смены страницы.
public virtual void GoToPage(int page)

Сменить текущую страницу на указанную, если она существует.

page:Индекс страницы.
protected abstract void InitializeSlot(int index, int id, GameObject slot)

Этот метод вызывается при генерации страницы, чтобы обработать слот.

Важно

Этот метод нужно реализовать дочернему объекту.

index:Порядковый индекс слота.
id:Идентификатор слота относительно общего кол-ва слотов.
slot:Объект слота.

Пример обработки слота

protected override void InitializeSlot(int index, int id, GameObject slot)
{
    // Берём кейс по общему идентификатору слота.
    Case @case = GameManager.GetConfig().GetCase(id);
    // У слота в компоненте CaseViewer вызываем инициализацию.
    slot.GetComponent<CaseViewer>().Initialize(@case);
}

Метод взят из класса CaseSelector.