Skip to content

Эффекты переходов

При изменении внешности фонов и персонажей с помощью команд @back и @char или при выполнении перехода сцены с помощью команд @startTrans и @finishTrans можно дополнительно указать, какой эффект перехода использовать. Например, следующая команда будет переходить на фон "River" с помощью эффекта перехода "DropFade":

nani
@back River.DropFade

Если эффект перехода не задан, то по умолчанию используется кросс-фейд (перекрестное затухание).

Вы также можете указать продолжительность перехода (в секундах) с помощью параметра time:

nani
@back River.DropFade time:1.5

Приведенное выше выражение будет вызывать переход на фон "River" с помощью перехода "DropFade" за 1,5 секунды. По умолчанию time для всех переходов составляет 0,35 секунды.

В случае, если вы хотите перейти к следующей команде сразу после выполнения перехода (не ждать окончания эффекта перехода), вы можете установить параметр wait в значение false. Напр.:

nani
@back River.Ripple time:1.5 wait:false
@bgm PianoTheme

— Фоновая музыка "PianoTheme" начнет играть сразу же и не будет задерживаться на 1,5 секунды, пока идет переход.

Некоторые эффекты перехода также поддерживают дополнительные параметры, которыми можно управлять с помощью параметра params:

nani
@back River.Ripple params:10,5,0.02

— установит частоту эффекта пульсации на 10, скорость на 5 и амплитуду на 0,02. Если параметр params не указан, то будут использоваться параметры по умолчанию.

Если вы хотите изменить выбранные параметры, вы можете пропустить другие, и они будут иметь свои значения по умолчанию:

nani
@back River.Ripple params:,,0.02

Все параметры перехода имеют тип Decimal (десятичный).

Приведенные выше примеры также работают для персонажей, просто обеспечьте переход через автономный параметр transition:

nani
@char CharID.Appearance transition:TransitionType params:...

Доступные эффекты перехода с их параметрами и значениями по умолчанию можно найти в приведенной ниже документации.

BandedSwirl

cover

Параметры

ИмяПо умолчанию
Количество закруток5
Частота10

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.BandedSwirl

; Применить переход со стандартным количеством закруток, но с низкой частотой ?? defeault
@back Appearance.BandedSwirl params:,2.5

Blinds

cover

Параметры

ИмяПо умолчанию
Количество6

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.Blinds

; Применить переход, используя 30 полос вместо стандартных 6
@back Appearance.Blinds params:30

CircleReveal

cover

Параметры

ИмяПо умолчанию
Уровень размытия0.25

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.CircleReveal

; Применить переход с большим уровнем размытия
@back Appearance.CircleReveal params:3.33

CircleStretch

cover

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.CircleStretch

CloudReveal

cover

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.CloudReveal

Crossfade

cover

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.Crossfade

Crumble

cover

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.Crumble

Dissolve

cover

Параметры

ИмяПо умолчанию
Шаг99999

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.Dissolve

; Применить переход с малым шагом
@back Appearance.Dissolve params:100

DropFade

cover

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.DropFade

LineReveal

cover

Параметры

ИмяПо умолчанию
Уровень размытия0.25
Уклон по оси X0.5
Уклом по оси Y0.5

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.LineReveal

; Применить переход с вертикальной линией слайда
@back Appearance.LineReveal params:,0,1

Pixelate

cover

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.Pixelate

RadialBlur

cover

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.RadialBlur

RadialWiggle

cover

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.RadialWiggle

RandomCircleReveal

cover

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.RandomCircleReveal

Ripple

cover

Параметры

ИмяПо умолчанию
Частота20
Скорость10
Амплитуда0.5

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.Ripple

; Применить переход с высокими частотой и амплитудой
@back Appearance.Ripple params:45,,1.1

RotateCrumble

cover

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.RotateCrumble

Saturate

cover

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.Saturate

Shrink

cover

Параметры

ИмяПо умолчанию
Скорость200

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.Shrink

; Применить переход с низкой скоростью
@back Appearance.Shrink params:50

SlideIn

cover

Параметры

ИмяПо умолчанию
Количество слайдов1

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.SlideIn

SwirlGrid

cover

Параметры

ИмяПо умолчанию
Сила скручивания15
Количество клеток10

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.SwirlGrid

; Применить переход с высокой силой скручивания и малым количеством клеток
@back Appearance.SwirlGrid params:30,4

Swirl

cover

Параметры

ИмяПо умолчанию
Сила скручивания15

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.Swirl

; Применить переход с высокой силой скручивания
@back Appearance.Swirl params:25

Water

cover

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.Water

Waterfall

cover

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.Waterfall

Wave

cover

Параметры

ИмяПо умолчанию
Магнитуда0.1
Фаза14
Частота20

Примеры

nani
; Применить переход со стандартными параметрами
@back Appearance.Wave

; Применить переход с высокой магнитудой и низкой частотой
@back Appearance.Wave params:0.75,,5

Пользовательские эффекты перехода

Маска растворения

Вы можете создавать пользовательские переходы на основе текстуры маски растворения. Маска растворения – это текстура в оттенках серого, где цвет определяет, когда пиксель перейдет к целевой текстуре. Например, рассмотрим следующую спиральную маску растворения:

cover

– Черный квадрат в правом верхнем углу указывает, что цель перехода должна быть отображена там в самом начале перехода, а белый квадрат в центре будет совершать переход в самом конце.

Чтобы сделать пользовательский переход, используйте режим перехода Custom и укажите путь (относительно папки project "Resources") к текстуре маски растворения с помощью параметра dissolve, например:

nani
@back Appearance.Custom dissolve:Textures/Spiral

Посмотрите следующее видео с примерами использования функции.

cover

Пользовательский шейдер

Можно добавить полностью настраиваемый пользовательский эффект перехода с помощью пользовательского шейдера ↗ акторов.

WARNING

Данная тема требует навыков графического программирования в Unity. Мы не предоставляем никакой поддержки или учебных пособий по написанию пользовательских шейдеров; обратитесь к странице поддержки для получения дополнительной информации.

Создайте новый шейдер и назначьте его акторам, которые должны использовать ваш новый пользовательский эффект перехода; дополнительные сведения о создании и назначении пользовательских шейдеров актеров см. в руководстве по пользовательскому шейдеру акторов.

Если в команде скрипта указано имя перехода, то ключевое слово шейдера ↗ с тем же именем (с префиксом NANINOVEL_TRANSITION_) включается в материал, используемый актором.

Чтобы добавить свои собственные переходы в пользовательский шейдер актора, используйте директиву multi_compile, например:

c
#pragma multi_compile _ NANINOVEL_TRANSITION_MYCUSTOM1 NANINOVEL_TRANSITION_MYCUSTOM2

— добавит переходы MyCustom1 и MyCustom2.

Затем можно использовать условные директивы для выбора конкретного метода визуализации на основе ключевого слова перехода. При повторном использовании встроенного шейдера акторов можно реализовать пользовательские переходы с помощью метода ApplyTransitionEffect, который используется в обработчике фрагментов:

c
fixed4 ApplyTransitionEffect(in sampler2D mainTex, in float2 mainUV, in sampler2D transitionTex, in float2 transitionUV, in float progress, in float4 params, in float2 randomSeed, in sampler2D cloudsTex, in sampler2D customTex)
{
    const fixed4 CLIP_COLOR = fixed4(0, 0, 0, 0);
    fixed4 mainColor = Tex2DClip01(mainTex, mainUV, CLIP_COLOR);
    fixed4 transitionColor = Tex2DClip01(transitionTex, transitionUV, CLIP_COLOR);

    #ifdef NANINOVEL_TRANSITION_MYCUSTOM1 // переход MyCustom1.
    return transitionUV.x > progress ? mainColor : lerp(mainColor / progress * .1, transitionColor, progress);
    #endif

    #ifdef NANINOVEL_TRANSITION_MYCUSTOM2 // переход MyCustom2.
    return lerp(mainColor * (1.0 - progress), transitionColor * progress, progress);
    #endif

    // Когда ключевые слова перехода не включены, по умолчанию используется кроссфейд.
    return lerp(mainColor, transitionColor, progress);
}

Затем вы сможете вызывать добавленные переходы таким же образом, как и встроенные, например:

nani
@back Snow.MyCustom1
@back River.MyCustom2