К содержимому

SusLoadingScreenContent ​

SusLoadingScreenContent

Full-bleed загрузка — brand banner, spinner и/или linear bar, message + опциональный subline.

Пакет

SusGame · Экраны (коммерческий)

Открыть в песочнице

SusGame · Screens

Свойства

ИмяТипПо умолчанию
BrandTextProp<string>""
MessageProp<string>"Loading..."
MessageKeyProp<string>""
MessageCountProp<string>""
SubMessageProp<string>""
ProgressProp<float>0f
ShowSpinnerProp<bool>true
SpinnerStyleProp<string>"circular"
VisibleProp<bool>true
MapProp<bool>false
MapPhaseProp<string>"search"
ShowBarProp<bool>true
RadarPlacementProp<string>"below"
RetryTextProp<string>"Retry"
TelemetryLayoutProp<string>"inline"
TelemetryReserveRowsProp<int>0
ErrorCountdownSecondsProp<int>20
ErrorCountdownTickMsProp<int>1000
BackdropProp<List<SusParallaxLayer>>[]из пресетов

Слоты

Слотов нет.

События

Публичных событий нет.

Хуки стиля ​

Контракт USS-классов — внешний вид переопределяется без правки C#. Состояния переключаются этими классами:

  • sus-brand__word
  • sus-loading-screen
  • sus-loading-screen__backdrop
  • sus-loading-screen__bar
  • sus-loading-screen__brand
  • sus-loading-screen__countdown
  • sus-loading-screen__countdown-fill
  • sus-loading-screen__countdown-num
  • sus-loading-screen__error
  • sus-loading-screen__error-btn
  • sus-loading-screen__error-text
  • sus-loading-screen__error-title
  • sus-loading-screen__indicator
  • sus-loading-screen__message
  • sus-loading-screen__message--swap
  • sus-loading-screen__message-count
  • sus-loading-screen__message-row
  • sus-loading-screen__radar
  • sus-loading-screen__segments
  • sus-loading-screen__sub
  • sus-loading-screen__sub-key
  • sus-loading-screen__sub-row
  • sus-loading-screen__sub-row--danger
  • sus-loading-screen__sub-row--live
  • sus-loading-screen__sub-row--ok
  • sus-loading-screen__sub-row--reserved
  • sus-loading-screen__sub-row--warn
  • sus-loading-screen__sub-rows
  • sus-loading-screen__sub-rows--columns
  • sus-loading-screen__sub-val
  • sus-loading-screen--visible

Использование ​

xml
<template>
  <sus:SusLoadingScreenContent
    :BrandText="Brand.Value"
    :Message="Msg.Value"
    :SubMessage="Sub.Value"
    :Progress="Prog.Value"
    :ShowSpinner="Spin.Value"
  />
</template>

<script>
public Prop<string> Brand = new("My Game");
public Prop<string> Msg = new("Loading...");
public Prop<string> Sub = new("");
public Prop<float> Prog = new(0.35f); // 0…1; <0 = indeterminate
public Prop<bool> Spin = new(true);
</script>
csharp
var loading = new SusLoadingScreenContent();
loading.BrandText.Value = "My Game";
loading.Message.Value = "Connecting…";
loading.SubMessage.Value = "Region EU";
loading.Progress.Value = 0.4f;   // shows linear bar
loading.Progress.Value = -1f;    // indeterminate → spinner if ShowSpinner
loading.ShowSpinner.Value = true;
Prop / APIРоль
BrandTextВерхний баннер; пусто → скрыт
MessageОсновная подпись
SubMessageВторичная подпись; пусто → скрыта
Progress0…1 → % бара; < 0 → неопределённый режим
ShowSpinnerВ неопределённом режиме показывает круговой спиннер
BrandBannerПостроенный хост баннера

Фон ​

Backdrop принимает список SusParallaxLayer (картинка, глубина, необязательный USS-класс) и ставит SusParallaxStack позади экрана:

csharp
loading.Backdrop.Value = new List<SusParallaxLayer>
{
    new SusParallaxLayer(Background.FromTexture2D(sky), depth: 4f),
    new SusParallaxLayer(Background.FromTexture2D(skyline), depth: 14f),
};
  • null или пустой список (по умолчанию) ничего не создаёт: дерево остаётся прежним.
  • Заданный, он добавляет первым потомком sus-loading-screen__backdrop (абсолютный, игнорирует picking), в котором лежит стек (BackdropHost / BackdropStack). Если список снова опустошить, узел удаляется.
  • Стек следит за указателем над всем экраном, встаёт на паузу, пока у приложения нет фокуса, и замирает, пока включён SusMotion.Reduce.

У экрана меню SusMenuScreen есть такой же prop Backdrop.

Индикатор, этап карты и радар ​

Каждый prop здесь по умолчанию даёт прежний вид; новые классы и узлы появляются, только когда вы его задаёте.

PropЗначенияЭффект
SpinnerStyle"circular" (по умолчанию) | "spinner" | "dual"spinner / dual: SusSpinner (размер lg, Dual для dual) заменяет кольцо, пока Progress отрицательный; кольцо скрывается классом
MapPhase"search" (по умолчанию) | "map"map добавляет sus-loading-screen--map-stage, пока включён Map, чтобы скин мог оформить этап карты отдельно от поиска
ShowBartrue (по умолчанию) | falsefalse скрывает полосу прогресса при любом Progress
RadarPlacement"below" (по умолчанию) | "above"above: радар поиска стоит прямо перед сообщением
RetryText"Retry"Подпись кнопки повтора у ShowError

Пока Progress отрицательный, виден только индикатор занятости — пустой полосы прогресса под ним нет. SearchRadar.Label, заданный как "", скрывает подпись радара.

Строки телеметрии ​

SetTelemetry(rows) обновляет строки на месте: строка узнаётся по ключу (плюс номеру повтора этого ключа), сохраняет свой элемент и меняет только значение и класс состояния. Новые ключи вставляются, пропавшие — удаляются.

PropЗначенияЭффект
TelemetryLayout"inline" (по умолчанию) | "columns"columns (sus-loading-screen__sub-rows--columns): ключи выровнены вправо, значения — влево по одной оси, так что ключи стоят на месте, когда меняется длина значений
TelemetryReserveRows0 (по умолчанию) или NНе меньше N строк; недостающие — скрытые заглушки той же высоты (__sub-row--reserved), так что блок не растёт, пока приходят строки

Фаза сообщения и счётчик ​

PropЭффект
MessageKeyПусто (по умолчанию): __message--swap при каждой смене Message, как раньше. Задан: класс смены — только когда меняется ключ
MessageCountСчётчик рядом с сообщением, например "12/80". Первое непустое значение строит __message-row + __message-count; смена счётчика никогда не даёт swap
csharp
loading.MessageKey.Value = "assets";
loading.Message.Value = "Loading assets";
loading.MessageCount.Value = "12/80";   // later "13/80": no swap

SusLoadingFlowScreen отдаёт MessageKey и MessageCount; Reset() очищает оба.

Заметки ​

  • Определённый режим ограничивает Progress диапазоном 0…1 и маппит его на бар 0…100.
  • Неопределённый режим скрывает бар; видимость спиннера дополнительно требует ShowSpinner=true.
  • Отличается от kit-компонента MigratedLoadingScreen (другой пакет / пропы).