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

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

@back River.DropFade

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

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

@back River.DropFade time:1.5

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

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

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

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

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

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

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

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

@back River.Ripple params:,,0.02

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

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

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

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

# BandedSwirl

Параметры

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

Примеры

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

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

# Blinds

Параметры

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

Примеры

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

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

# CircleReveal

Параметры

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

Примеры

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

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

# CircleStretch

Примеры

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

# CloudReveal

Примеры

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

# Crossfade

Примеры

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

# Crumble

Примеры

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

# Dissolve

Параметры

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

Примеры

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

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

# DropFade

Примеры

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

# LineReveal

Параметры

Имя По умолчанию
Уровень размытия 0.25
Уклон по оси X 0.5
Уклом по оси Y 0.5

Примеры

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

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

# Pixelate

Примеры

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

# RadialBlur

Примеры

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

# RadialWiggle

Примеры

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

# RandomCircleReveal

Примеры

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

# Ripple

Параметры

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

Примеры

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

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

# RotateCrumble

Примеры

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

# Saturate

Примеры

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

# Shrink

Параметры

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

Примеры

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

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

# SlideIn

Параметры

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

Примеры

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

# SwirlGrid

Параметры

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

Примеры

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

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

# Swirl

Параметры

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

Примеры

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

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

# Water

Примеры

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

# Waterfall

Примеры

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

# Wave

Параметры

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

Примеры

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

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

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

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

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

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

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

@back Appearance.Custom dissolve:Textures/Spiral

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

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

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

ВНИМАНИЕ

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

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

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

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

#pragma multi_compile _ NANINOVEL_TRANSITION_MYCUSTOM1 NANINOVEL_TRANSITION_MYCUSTOM2

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

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

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);
}

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

@back Snow.MyCustom1
@back River.MyCustom2
Обновлено: October 5, 2020