Эффекты переходов
При изменении внешности фонов и персонажей с помощью команд @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
Посмотрите следующее видео с примерами использования функции.
Пользовательский шейдер
Можно добавить полностью настраиваемый пользовательский эффект перехода с помощью пользовательского шейдера акторов.
WARNING
Данная тема требует навыков графического программирования в 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