SusLoadingScreenContent

Full-bleed загрузка — brand banner, spinner и/или linear bar, message + опциональный subline.
Пакет
SusGame · Экраны (коммерческий)
Свойства
| Имя | Тип | По умолчанию | |
|---|---|---|---|
BrandText | Prop<string> | "" | |
Message | Prop<string> | "Loading..." | |
MessageKey | Prop<string> | "" | |
MessageCount | Prop<string> | "" | |
SubMessage | Prop<string> | "" | |
Progress | Prop<float> | 0f | |
ShowSpinner | Prop<bool> | true | |
SpinnerStyle | Prop<string> | "circular" | |
Visible | Prop<bool> | true | |
Map | Prop<bool> | false | |
MapPhase | Prop<string> | "search" | |
ShowBar | Prop<bool> | true | |
RadarPlacement | Prop<string> | "below" | |
RetryText | Prop<string> | "Retry" | |
TelemetryLayout | Prop<string> | "inline" | |
TelemetryReserveRows | Prop<int> | 0 | |
ErrorCountdownSeconds | Prop<int> | 20 | |
ErrorCountdownTickMs | Prop<int> | 1000 | |
Backdrop | Prop<List<SusParallaxLayer>> | [] |
Слоты
События
Хуки стиля
Контракт USS-классов — внешний вид переопределяется без правки C#. Состояния переключаются этими классами:
sus-brand__wordsus-loading-screensus-loading-screen__backdropsus-loading-screen__barsus-loading-screen__brandsus-loading-screen__countdownsus-loading-screen__countdown-fillsus-loading-screen__countdown-numsus-loading-screen__errorsus-loading-screen__error-btnsus-loading-screen__error-textsus-loading-screen__error-titlesus-loading-screen__indicatorsus-loading-screen__messagesus-loading-screen__message--swapsus-loading-screen__message-countsus-loading-screen__message-rowsus-loading-screen__radarsus-loading-screen__segmentssus-loading-screen__subsus-loading-screen__sub-keysus-loading-screen__sub-rowsus-loading-screen__sub-row--dangersus-loading-screen__sub-row--livesus-loading-screen__sub-row--oksus-loading-screen__sub-row--reservedsus-loading-screen__sub-row--warnsus-loading-screen__sub-rowssus-loading-screen__sub-rows--columnssus-loading-screen__sub-valsus-loading-screen--visible
Использование
<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>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 | Вторичная подпись; пусто → скрыта |
Progress | 0…1 → % бара; < 0 → неопределённый режим |
ShowSpinner | В неопределённом режиме показывает круговой спиннер |
BrandBanner | Построенный хост баннера |
Фон
Backdrop принимает список SusParallaxLayer (картинка, глубина, необязательный USS-класс) и ставит SusParallaxStack позади экрана:
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, чтобы скин мог оформить этап карты отдельно от поиска |
ShowBar | true (по умолчанию) | false | false скрывает полосу прогресса при любом Progress |
RadarPlacement | "below" (по умолчанию) | "above" | above: радар поиска стоит прямо перед сообщением |
RetryText | "Retry" | Подпись кнопки повтора у ShowError |
Пока Progress отрицательный, виден только индикатор занятости — пустой полосы прогресса под ним нет. SearchRadar.Label, заданный как "", скрывает подпись радара.
Строки телеметрии
SetTelemetry(rows) обновляет строки на месте: строка узнаётся по ключу (плюс номеру повтора этого ключа), сохраняет свой элемент и меняет только значение и класс состояния. Новые ключи вставляются, пропавшие — удаляются.
| Prop | Значения | Эффект |
|---|---|---|
TelemetryLayout | "inline" (по умолчанию) | "columns" | columns (sus-loading-screen__sub-rows--columns): ключи выровнены вправо, значения — влево по одной оси, так что ключи стоят на месте, когда меняется длина значений |
TelemetryReserveRows | 0 (по умолчанию) или N | Не меньше N строк; недостающие — скрытые заглушки той же высоты (__sub-row--reserved), так что блок не растёт, пока приходят строки |
Фаза сообщения и счётчик
| Prop | Эффект |
|---|---|
MessageKey | Пусто (по умолчанию): __message--swap при каждой смене Message, как раньше. Задан: класс смены — только когда меняется ключ |
MessageCount | Счётчик рядом с сообщением, например "12/80". Первое непустое значение строит __message-row + __message-count; смена счётчика никогда не даёт swap |
loading.MessageKey.Value = "assets";
loading.Message.Value = "Loading assets";
loading.MessageCount.Value = "12/80"; // later "13/80": no swapSusLoadingFlowScreen отдаёт MessageKey и MessageCount; Reset() очищает оба.
Заметки
- Определённый режим ограничивает
Progressдиапазоном 0…1 и маппит его на бар 0…100. - Неопределённый режим скрывает бар; видимость спиннера дополнительно требует
ShowSpinner=true. - Отличается от kit-компонента
MigratedLoadingScreen(другой пакет / пропы).